Duplicar posible:
Why a = a is nil in Ruby?¿Por qué puedo asignarle una variable indefinida en Ruby y obtener nil?
Hay una, digamos, "extraño fenómeno" en Ruby con el uso de variables no definidas. Es como esto:
# 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!?
qué puedo asignar una variable no definida a sí mismo en Ruby y obtener nil
?
Tenga en cuenta que estoy usando Ruby 1.9.3 aquí. No estoy seguro de qué otras versiones esto puede ser cierto en.
(Gracias a Gary Bernhardt para demostrar esto en su hilarious talk.)
Presumiblemente, 'foo = foo' se evalúa en dos pasos. El primero "declara" la variable con un valor predeterminado, y el segundo se lo asigna a sí mismo. – millimoose