Über Instanzvariablen
Kernpunkte:
- Wenn die
.new-Methode einer Klasse aufgerufen wird, um eine Objektinstanz zu erzeugen, werden der .initialize-Methode alle Argumente übergeben, um den Zustand der Instanz zu initialisieren.
- Namen von Instanzvariablen beginnen mit
@.
- Instanzvariablen sind standardmäßig
nil, bis sie explizit gesetzt werden.
- Instanzvariablen sind standardmäßig privat und sollten über Getter und Setter bearbeitet werden.
class Backpack
initialize(owner)
@owner = owner
end
def owner
@owner
end
def owner=(new_owner)
@owner = new_owner
end
end
- Methoden mit einem abschließenden
= werden von Ruby als Setter erkannt und erlauben die syntaktische „Zucker“-Schreibweise der Zuweisungssyntax, z. B. Backpack.new("Sven").owner = "Ayah".
Beachte das Leerzeichen zwischen owner und =, während der eigentliche Methodenname owner= ist.
- Getter und Setter lassen sich mit den Methoden
attr_reader, attr_writer und attr_accessor erzeugen:
-
attr_reader: Erzeugt Getter für die aufgelisteten Symbole
-
attr_writer: Erzeugt Setter für die aufgelisteten Symbole
-
attr_accessor: Erzeugt Getter und Setter für die aufgelisteten Symbole
class Backpack
attr_accessor :owner
initialize(owner)
@owner = owner
end
end
- Warum Getter und Setter verwenden statt direkt die Instanzvariable?
- Gäbe es im vorherigen Beispiel einen Tippfehler (wir nennen das „Typo“, z. B.
@ownar), würde der Code still fehlschlagen und möglicherweise einen Bug ins System bringen.
- Getter und Setter machen das explizit und lösen einen Fehler aus, wenn ein Tippfehler gemacht wird.
Referenzen
Objektinstanzen initialisieren
Instanzvariablen