2012-10-29 13 views
5

可能性の重複:
Why is `a = a` `nil` in Ruby?なぜX = X Xが定義されていない場合でも、エラーは発生しません

私はちょうどよこの挙動の理由があると確信していますそれが何か不思議です。

y = x # NameError: undefined local variable or method 'x' 
x = x # => nil 
+2

参照:http://stackoverflow.com/questions/8908050/why-is-a-a-nil-in-ruby –

+0

ありがとう、私はそれを見つけることができなかった複製について申し訳ありません。 – mechanicalfish

答えて

6

これは、変数がRubyで初期化されているために発生します。これは、この言語固有のものです。基本的には、変数に値が割り当てられる可能性がある場合、Rubyは変数を初期化(作成)します。この例を考えてみましょう:

if false 
    x = "hello" 
end 

xは間違いなくここに"hello"文字列を割り当てられません。ただし、静的プログラム解析の場合はnilで初期化されますが、割り当てられている可能性があります。

あなたの例は似ています。 xに何かを割り当てるので、nilで初期化され、のステートメントが実行されます。したがって、実行中にxは、実際にはnilです。

関連する問題