|
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. |
|
|