Definice třídy
Třídy jsou v Ruby definované pomocí používání klíčového slova class následovaného jménem. Jméno musí začínat velkým písmenem a na základě dohody jména která obsahují víc než jedno slovo se píší společně bez separačních znaků. Třídní definice může obsahovat metodu, třídní proměnnou, a instance proměnných stejně jako volání metod, které provedou třídní souvislost, jako attr_accessor. Definice třídy je ukončená klíčovým slovem end.
Příklad:
class MojeTrida
def nejaka_metoda
end
end
Instanční proměnné
Instanční proměnné jsou vytvořený pro každou instanci třídy a jsou přístupné jen uvnitř této instance nebo skrz metody poskytnuté touto instancí. Pro zpřístupnění se používá @ operátor.
Příklad:
class MojeTrida
@jedna = 1
def delej_neco
@jedna = 2
end
def vystup
puts @jedna
end
end
instance = MojeTrida.new
instance.vystup
instance.delej_neco
instance.vystup
Překvapivě, bude zobrazen tento výstup:
nula
2
Toto stane se ( nula v prvním řádku výstupu) protože @jedna definovaná pod třídou MojeTrida je instance proměnné patřící třídě object (poznámka: toto není stejné jako třídní proměnná a nemohlo by to být označováno jako @@jedna), zatímco @one definovaný uvnitř metody delej_neco je instance proměnné patřící třídě MojeTrida.
Třídní proměnná
Třídní proměnné jsou zpřístupněné používáním @@ operátora. Tyto proměnné jsou přidružené s třídou spíše než nějaká objektová instance třídy a jsou stejné napříč všemi instancemi objektu.(Je to něco stejného jako proměnné třídy "static" v Javě nebo C++) .
Příklad:
class MojeTrida
@@hodnota = 1
def pridej_jednu
@@hodnota= @@hodnota + 1
end
def vyhodnot
@@hodnota
end
end
instanceJedna = MojeTrida.new
instanceDva = MojeTrida.new
puts instanceJedna.vyhodnot
instanceJedna.pridej_jednu
puts instanceJedna.vyhodnot
puts instanceDva.vyhodnot
Výstupy:
1
2
2