Variabili d'Istanza
Una variabile d'istanza ha un nome che comincia con una
@, e la sua visibilità è confinata
all'oggetto a cui si riferisce self. A due
oggetti differenti , anche se appartenenti alla stessa
classe, è permesso di avere valori differenti pe rle
proprie variabili d'istanza.
Dall'esterno dell'oggetto, le variabili d'istanza non possono venire ne' alterate ne' osservate (cioè, le variabili d'istanza in ruby non sono mai pubbliche) eccetto che dai metodi che sono messi apposta dal programmatore.
Come con le variabili globali, le variabili d'istanza
hanno il valore nil finchè non sono
inizializzate .
Le variabili d'istanza in ruby non hanno bisogno di dichiarazione. Ciò implica una struttura flessibile degli oggetti. In effetti, ogni variabile d'istanza viene aggiunta dinamicamente ad un oggetto la prima volta che le si fa riferimento.
ruby> class InstTest
| def set_foo(n)
| @foo = n
| end
| def set_bar(n)
| @bar = n
| end
| end
nil
ruby> i = InstTest.new
#<InstTest:0x83678>
ruby> i.set_foo(2)
2
ruby> i
#<InstTest:0x83678 @foo=2>
ruby> i.set_bar(4)
4
ruby> i
#<InstTest:0x83678 @foo=2, @bar=4>
Notate che i qui sopra non riporta nessun valore
per @bar finchè non viene invocato il
metodo set_bar.