5

重複の可能性:
Rubyで `a = a`` nil`なのはなぜですか?

この振る舞いには理由があると確信しています。私はそれが何であるかを知りたいだけです。

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

1 に答える 1

5

これは、Rubyで変数が初期化される方法が原因で、この言語にかなり固有です。基本的に、Rubyは、変数に値が割り当てられる可能性がある場合、変数を初期化(作成)します。この例を考えてみましょう。

if false
  x = "hello"
end

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

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

于 2012-10-29T17:31:47.623 に答える