Ruby が変数を追跡する方法に混乱しています。例えば:
ケース 1:
if true
a
end
というエラーが表示されますundefined local variable or method a
。
ケース 2:
if false
a
end
a
a
最初のエラーではなく、2番目のエラーが表示されますa
。
ケース 3:
if false
a=2
end
a #=> nil
defined? a #=> 'local-variable'
ケース 2 とケース 3 を比較すると、ケース 2 では最初にエラーを無視しましたa
。a
ルビーの実行パスがin状態で変数に到達していないことが原因だと思いますfalse
。ケース3で割り当てを行う場合も同じです。変数a
は定義されていますが、nil
値があります。誰かがそれがどのように機能するかを説明できますか?