(c)2001-2018 Fox Mulder, Natalia Oreiro, Bruce Lee, Tony Halik, kosmaci kosmici Powered by Coca-Cola

Valid HTML 4.01 Transitional

Brovar

Strona o quizach
quiz.net.pl


Grupa quizowa
na facebooku



Wyrażenia If-then-else
Wyrażenie If-then-else pozwala na porównanie wartości i wykonanie określonych części skryptu w zależności od wyniku porównania.

Podstawowy format
  • if (v1 operator v2) { komendy }
    elseif (v1 operator v2) { komendy }
    else { komendy }
W nawiasach okrągłych ( ) zawarte są porównania, natomiast w nawiasach klamrowych { } zawarte są komendy które mają zostać wykonane jeśli wynikiem porównania będzie prawda. Należy upewnić się że liczba nawiasów otwierających i zamykających porównania i komendy się zgadza, aby nie mieć wątpliwości czy zostały użyte odpowiednie porównania i czy wykonane zostaną odpowiednie komendy.

Używanie nawiasów ( ) przyspiesza przetwarzanie. Jeśli w aliasie użyte zostanie zbyt mało nawiasów, wyrażenie może stać się niejednoznaczne i alias będzie potrzebował więcej czasu na jego zrozumienie, będzie mógł zrozumieć je nieprawdiłowo, lub nie zrozumieć go wcale.

Możesz zagnieżdżać tak wiele wyrażeń if-then-else ile tylko chcesz wewnątrz każdego z nich.

Operatory
$ifmatch
  • == równy
  • === równy (z uwzględnieniem wielkości liter)
  • != różny od
  • < mniejszy
  • > większy
  • >= większy lub równy
  • <= mniejszy lub równy
  • // v1 jest wielokrotnością v2
  • \\ v1 nie jest wielokrotnością v2
  • & porównanie bitów
  • isin ciąg v1 zawiera się w ciągu v2
  • isincs ciąg v1 zawiera się w ciągu v2 (z uwzględnieniem wielkości liter)
  • iswm wieloznak v1 odpowiada ciągowi v2
  • isnum liczba v1 jest liczbą z zakresu v2, podanego w postaci n1-n2 (v2 jest opcjonalny)
  • isletter litera v1 znajduje się w zbiorze liter v2 (v2 jest opcjonalny)
  • isalnum tekst zawiera tylko litery i cyfry
  • isalpha tekst zawiera tylko litery
  • islower wszystkie litery w tekście są małe
  • isupper wszystkie litery w tekście są wielkie
  • ison nick v1 znajduje się na kanale v2
  • isop nick v1 jest opem na kanale v2
  • ishop nick v1 jest halfopem na kanale v2
  • isvoice nick v1 ma voica na kanale v2
  • isreg nick v1 jest zwykłym użytkownikiem na kanale v2
  • ischan przebywasz na kanale v1
  • isban v1 jest zabanowanym adresem na wewnętrznej liście banów (IAL)
  • isaop użytkownik v1 znajduje się na twojej liście auto-opów kanału v2 (v2 jest opcjonalny)
  • isavoice użytkownik v1 znajduje się na twojej liście auto-voiców kanału v2 (v2 jest opcjonalny)
  • isignore użytkownik v1 znajduje się na twojej liście ignore z przełącznikiem v2 (v2 jest opcjonalny)
  • isprotect użytkownik v1 znajduje się na twojej liście chronionych użytkowników kanału v2 (v2 jest opcjonalny)
  • isnotify użytkownik v1 znajduje się na twojej liście notify
Aby zanegować operator należy poprzedzić go znakiem wykrzyknika "!".



<<<         $ifmatch

Zwraca pierwszy parametr z porównania if-then-else.

W wypadku porównania:
  • if (tekst isin jakiśtekst) { ... }
identyfikator $ifmatch zwróci "tekst"


Łączenie porównań
Możesz łączyć porównania przy pomocy znaków && jako "i" oraz || jako "lub".
  • number {
      if (($1 > 0) && ($1 < 10)) {
        if ($1 < 5) echo Liczba jest mniejsza od pięciu
        else echo Liczba jest większa od pięciu
      }
      else echo Liczba spoza zakresu
    }
Powyższy alias sprawdza czy liczba podana przy użyciu komendy "/number <liczba>" zawiera się w określonym zakresie.

Przedrostek negacji "!"
Możesz używać przedrostka "!" przy zmiennych i identyfikatorach aby zanegować ich wartość. Poniższe wyrażenia są równoznaczne:
  • if (%x == $null) echo x nie posiada wartości
  • if (!%x) echo x nie posiada wartości

Przykłady
  • listops {
      echo 4 * Podaję listę Opów kanału #
      set %i 1
      :next
      set %nick $nick(#,%i)
      if (%nick == $null) goto done
      if (%nick isop #) echo 3 %nick jest Opem!
      inc %i
      goto next
      :done
      echo 4 * Koniec listy Opów
    }
Powyższy alias wypisuje listę Opów aktualnego kanału. Jest to dłuższy z możliwych przykładów, gdyż mogliśmy użyć zamiast tego identyfikatora $opnick(), jednak tu identyfikator $nick() dał nam przykład zastosowania operatora "isop" i zwrócenia wartości $null po dotarciu do końca listy Opów.
  • GiveOps {
      %i = 0
      %nicks = ""
      :nextnick
      inc %i
      if ($snick(#,%i) == $null) { if ($len(%nicks) > 0) mode # +oooo %nicks | halt }
      %nicks = %nicks $snick(#,%i)
      if (4 // %i) { mode # +oooo %nicks | %nicks = "" }
      goto nextnick
    }
Tak wygląda definicja popup która daje Opy nickom zaznaczonym na liście nicków aktualnego kanału.
  • on 1:ctcpreply:PING* {
      if ($2 == $null) halt
      else {
        %pt = $ctime - $2
        if (%pt < 0) set %pt 0
        if (%pt < 5) echo 4 [PING reply] $nick is too close for comfort
        elseif (%pt < 20) echo [PING reply] $nick is at just about the right distance
        else echo 4 [PING reply] Earth to $nick earth to $nick
      }
      halt
    }
Przejmuje odpowiedź na ping i wyświetla śmieszną wiadomość zależnie od wielkości pinga.