5
可能性の重複:
Why is `a = a` `nil` in Ruby?なぜX = X Xが定義されていない場合でも、エラーは発生しません
私はちょうどよこの挙動の理由があると確信していますそれが何か不思議です。
y = x # NameError: undefined local variable or method 'x'
x = x # => nil
可能性の重複:
Why is `a = a` `nil` in Ruby?なぜX = X Xが定義されていない場合でも、エラーは発生しません
私はちょうどよこの挙動の理由があると確信していますそれが何か不思議です。
y = x # NameError: undefined local variable or method 'x'
x = x # => nil
これは、変数がRubyで初期化されているために発生します。これは、この言語固有のものです。基本的には、変数に値が割り当てられる可能性がある場合、Rubyは変数を初期化(作成)します。この例を考えてみましょう:
if false
x = "hello"
end
x
は間違いなくここに"hello"
文字列を割り当てられません。ただし、静的プログラム解析の場合はnil
で初期化されますが、割り当てられている可能性があります。
あなたの例は似ています。 x
に何かを割り当てるので、nil
で初期化され、のステートメントが実行されます。したがって、実行中にx
は、実際にはnil
です。
参照:http://stackoverflow.com/questions/8908050/why-is-a-a-nil-in-ruby –
ありがとう、私はそれを見つけることができなかった複製について申し訳ありません。 – mechanicalfish