EPIC4 Manual


Zmienne

W kodzie skryptu każde słowo, nie będące nazwą polecenia, jest zwykłym słowem, dopóki nie posiada znaku '$' (dolara) przed sobą. Wtedy staje się nazwą zmiennej. Zmienne, w zależnie od sytuacji należy/można różnie zapisywać. Np:


if (zmienna) {        /* tu akurat '$' nie jest konieczny -- bo wew. funckji */
if ([$zmienna]) {
if ($zmienna) {       /* to jest zle -- nie ma tak, jak w PHP */
if ([${zmienna}]) {
if ([$0]) {           /* argmenty numerowane zawsze w '[]' -- zobacz niżej */

Odstępstwem od pierwszego przykłdu są polecenia fe, fec oraz for, gdzie trzeba podać nazwę zmiennej wewnątrz '()' bez '[]' ze znakiem '$'.

W EpiCu są 2 rodzje zmiennych: globalne i lokalne
Zmienne globalne raz zdefiniowane zostają w pamięci clienta, aż zostaną 'ręcznie' skasowane. Kilka sposobów definiowania zmiennych globalnych:


@ zmienna = [Pikachu]
@ ::zmienna = [Pokemons SuX]
^assign zmienna pika pika pika
eval (zmienna = 31337)


Zmienne globalne (choć w lokalne też tak można) kasuje się kilka sposobów:


^assign -zmienna
@ zmienna = []     /* EpiC kasuje puste zmienne, toche inaczej niz w ircII */


Zmienne lokalne pozsotają w pamięci clienta tak długo, jak działa polecenie, które je zdefiniowało (choć w niektórych przypadkach, gdy oczekujemy na odpowiedź servera, wykonanie aliasa kończy się wcześniej i zmienne lokalne znikają). Defuniuje się je tak:


@ :zmienna = [BlaH]
local zmienna PokemonZ


Pamiętać należy, że wartości zmiennych (zarówno globalnych, jak i lokalnych) przy definiowaiu za pomocą '@' (małpy) należy podawać w nawiasach kwadratowych '[]', chyba że jest to liczba, inna zmienna lub wynik funkcji:


@ zmienna1 = 123
@ zmienna2 = zmienna1
@ zmienna3 = [zmienna1]
@ zmienna4 = [$zmienna1]
@ zmienna5 = C
@ zmienna6 = after(! blah!ble)
@ zmienna7 = $1
@ zmienna8 = [$1]

$zmienna1 ma wartość '123' (jest to liczba, więc '[]' nie są koniczne)
$zmienna2 ma wartość jak $zmienna1, czyli '123' (ale późniejsza zmiana $zmiennej1 nie pociąga zmiany $zmiennej2)
$zmienna3 to słowo 'zmienna1' (zabrakło '$', bo są nawiasy '[]')
$zmienna4 to znów wartość $zmiennej1
$zmienna5 to np '#pikachu' ('$C' oznacza aktualny kanał -- zobacz dalsze części Wstępu)
$zmienna6 to 'ble' (wynik funkcji '$after()')
$zmienna7 jest pusta (zabrakło '[]' dla zmiennej liczbowej -- zawsze muszą być w '[]')
$zmienna9 juz jest OK



Jeszcze jednym sposobem definiowania zmiennych jest użycie ':' np wewnątrz jakiegoś warunku (czasem jednak może ten sposób nie działać - trzeba pamiętać o ujęciu deklaracji zmiennej w dodatkowe nawiasy):


if ((:blah = ischanop($N $C)) == 1) { ... }

Co można zapisać klasycznie jako:

@ :blah = ischanop($N $C)
if (blah == 1) { ... }

Zmienną, wewnątrz ONow czy aliasów są także zmienne nie nazwane, oznaczane jako kolejne liczby zaczynając od '0' (zera). Nie jest to jednakże konieczne - więcej na ten temat znajdziesz w opisie aliasów.


/alias blah echo *** Jeden: $0, dwa: $1, trzy: $2, cztery: $3 ...
/blah 1 2 3 4

'*** Jeden: 1, dwa: 2, trzy: 3, cztery: 4 ...'


/alias pika echo *** Moje argumenty: $0-
/pika 1 2 3 4 5 6 7 8 9

Tutaj używając '-' każemy pokazać pierwszy i wszystkie inne argumenty:
'*** Moje zmienne: 1 2 3 4 5 6 7 8 9'

Można także działać na zakresach:

/alias ble echo *** $1-3 + $11-
/ble a b c d e f g

'*** b c d + '  /* argumenty drugi, trzeci, czwarty, dwunasty i każdy następny
                 * ale było ich tylko siedem więc pokazały się tylko trzy pierwsze. */


Można także tworzyć tablice zmiennych. Jest to bardzo użyteczne, gdyż pozwala trzymac pożadek i grupować dowolnie zmienne wg określonej wartości


@ tablica[a] = [Pikachu]
@ tablica[b] = [Raichu]
@ tablica[c] = [Voltorb]

Tablice bardziej złożone to np:

@ cache[games][quake] = [1 2 3]
@ cache[games][doom] = [1 2]
@ cache[games][nfs] = [1 2 3 4 5]

Przykłady użycia tablic -- oba są poprawne i działają tak samo. Jednak czasem, w zależności od sytuacji, stosować można tylko jeden z nich.

/eval echo $ble[$jeden][$dwa]
/eval echo $ble.${jeden}.${dwa}

Więcej przykładów związanymi z tablicami będzie w opisie polecenia foreach



Wstęp Home Następny Paragraf