5

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 では最初にエラーを無視しましたaaルビーの実行パスがin状態で変数に到達していないことが原因だと思いますfalse。ケース3で割り当てを行う場合も同じです。変数aは定義されていますが、nil値があります。誰かがそれがどのように機能するかを説明できますか?

4

1 に答える 1