可能性の重複:
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を使用しています。私はこれがで本当かもしれない他のどのバージョンかわからない。
(彼hilarious talkでこれを証明するためのゲイリーベルナールに感謝します。)
おそらく 'foo = foo'は2つのステップで評価されます。最初の変数はデフォルト値で変数を宣言し、2番目の変数はそれをそれ自身に割り当てます。 – millimoose