Informazioni su Variabili di istanza
Punti chiave:
- Quando il metodo
.new di una classe viene chiamato per creare un'istanza di un oggetto, al metodo .initialize vengono passati tutti gli argomenti per inizializzare lo stato dell'istanza.
- I nomi delle variabili di istanza sono preceduti da
@.
- Le variabili di istanza hanno come valore predefinito
nil finché non vengono impostate esplicitamente.
- Le variabili di istanza sono private per impostazione predefinita e vanno gestite tramite getter e setter
class Backpack
initialize(owner)
@owner = owner
end
def owner
@owner
end
def owner=(new_owner)
@owner = new_owner
end
end
- I metodi il cui nome termina con
= sono riconosciuti da Ruby come setter e consentono l'uso della sintassi di assegnazione come «zucchero sintattico», ad esempio Backpack.new("Sven").owner = "Ayah".
Nota lo spazio tra owner e =, mentre il nome effettivo del metodo è owner=.
- I getter e i setter possono essere creati con i metodi
attr_reader, attr_writer e attr_accessor:
-
attr_reader: crea i getter per i simboli elencati
-
attr_writer: crea i setter per i simboli elencati
-
attr_accessor: crea i getter e i setter per i simboli elencati
class Backpack
attr_accessor :owner
initialize(owner)
@owner = owner
end
end
- Perché usare getter e setter invece della variabile di istanza direttamente?
- Se ci fosse un errore di battitura (li chiamiamo «typo») nell'esempio precedente (ad esempio
@ownar), fallirebbe in silenzio, introducendo potenzialmente un bug nel sistema.
- I getter e i setter rendono tutto esplicito e sollevano un errore in caso di typo
Riferimenti
Inizializzare le istanze degli oggetti
Le variabili di istanza