A(z) Példányváltozók fogalomról
Kulcspontok:
- Amikor egy osztály
.new metódusát meghívjuk egy objektumpéldány létrehozásához, a .initialize metódus megkapja az összes argumentumot, hogy inicializálja a példány állapotát.
- A példányváltozók neve
@ előtaggal kezdődik.
- A példányváltozók értéke alapértelmezés szerint
nil, amíg kifejezetten be nem állítjuk őket.
- A példányváltozók alapértelmezés szerint privátak, ezért gettereken és settereken keresztül érdemes velük dolgozni
class Backpack
initialize(owner)
@owner = owner
end
def owner
@owner
end
def owner=(new_owner)
@owner = new_owner
end
end
- A
= jelre végződő metódusokat a Ruby setterként ismeri fel, és lehetővé teszik az értékadás szintaxis szintaktikai „cukorként” való használatát, pl. Backpack.new("Sven").owner = "Ayah".
Figyeld meg a szóközt az owner és az = között, pedig a tényleges metódusnév owner=.
- Gettereket és settereket az
attr_reader, attr_writer és attr_accessor metódusokkal hozhatsz létre:
-
attr_reader: gettereket hoz létre a felsorolt szimbólumokhoz
-
attr_writer: settereket hoz létre a felsorolt szimbólumokhoz
-
attr_accessor: gettereket és settereket hoz létre a felsorolt szimbólumokhoz
class Backpack
attr_accessor :owner
initialize(owner)
@owner = owner
end
end
- Miért érdemes gettereket és settereket használni a példányváltozó közvetlen elérése helyett?
- Ha az előző példában elgépelés volt (ezt hívjuk „typo”-nak), például
@ownar, akkor az csendben elbukna, és potenciálisan bugot vinne a rendszerbe.
- A getterek és setterek ezt nyilvánvalóvá teszik, és hibát dobnak, amikor elgépelés történik.
Hivatkozások
Objektumpéldányok inicializálása
Példányváltozók