Eventuali duplicati:
Why a = a is nil in Ruby?Perché posso assegnare una variabile indefinita a se stessa in Ruby e ottenere nulla?
C'è una, per così dire, "fenomeno strano" in Ruby con l'utilizzo di variabili indefinite. E 'in questo modo:
# irb session follows
#
foo # undefined local variable or method 'foo'
bar # same for 'bar'
foo = bar # still same for 'bar'
foo = foo # nil - HUH?
foo # is now set to nil!?
Perché posso assegnare una variabile non definita a se stesso in Ruby e ottenere nil
?
Nota che sto usando Ruby 1.9.3 qui. Non sono sicuro di quali altre versioni questo può essere vero in.
(grazie a Gary Bernhardt per dimostrare questo nel suo hilarious talk.)
Presumibilmente, 'foo = foo' viene valutato in due passaggi. Il primo "dichiara" la variabile con un valore predefinito, e il secondo lo assegna a se stesso. – millimoose