可能重複:
Why a = a is nil in Ruby?爲什麼我可以在Ruby中爲自己分配一個未定義的變量並獲得零?
有一個,我們可以說,「奇特的現象」在Ruby中使用未定義的變量。它是這樣的:
# 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!?
爲什麼我一個未定義的變量在Ruby中分配給自己,並得到nil
?
請注意,我在這裏使用了Ruby 1.9.3。我不知道還有什麼其他的版本,這可能是真正的。
(感謝Gary伯恩哈特在他hilarious talk展示這種)
推測「foo = foo」分兩步評估。第一個用默認值「聲明」變量,第二個將它賦值給自己。 – millimoose 2012-02-02 22:12:15