Zmienne

edytuj

Ruby ma cztery rodzaje zmiennych, jeden rodzaj stałych i dokładnie dwa rodzaje pseudo-zmiennych. Zmienne i stałe nie mają typu. Owszem, niestypizowane zmienne mają kilka wad, jednak ilość korzyści znacznie je przewyższa. Zmienne niestypizowane dobrze pasują do szybkiej i prostej filozofii Rubiego.

Zmienne muszą być zadeklarowane w większości języków w celu określenia ich typu, zdolności do modyfikacji (np. czy są stałymi), oraz zasięgu. Odkąd jednak typ nie jest problemem a cała reszta jest widoczna z nazwy zmiennej, co za chwilę zobaczysz, nie potrzebujemy deklaracji zmiennych w Rubim.

Na pierwszy rzut oka można określić kategorię zmiennej, ponieważ pierwszy znak lub znaki nazwy zmiennej (identyfikatora) charakteryzują ją:

Znak(i) Rodzaj zmiennej
$ zmienna globalna
@@ zmienna klasowa
@ zmienna instancji
[a-z] lub _ zmienna lokalna
[A-Z] stała

Jedynymi wyjątkami od podanych zasad są pseudo-zmienne Rubiego: self - która zawsze wskazuje bieżąco wykonywany obiekt oraz nil - która jest nieznaczącą wartością przypisywaną niezainicjalizowanym zmiennym. Obie są nazwane tak, jakby były lokalnymi zmiennymi, ale self jest zmienną globalną zarządzaną przez interpreter, natomiast nil jest tak naprawdę stałą. Jako, że istnieją tylko te dwa wyjątki, nie powinny one zbytnio gmatwać powyższych konwencji.

Do self lub nil nie możesz przypisać żadnych wartości. main, jako wartość self wskazuje tu na bieżący główny obiekt:

irb(main):001:0> self
=> main
irb(main):002:0> nil
=> nil