我对 Ruby 跟踪变量的方式感到困惑。例如:
情况1:
if true
a
end
会给你一个错误的说法undefined local variable or method a
。
案例2:
if false
a
end
a
会给你同样的第二个错误a
,而不是第一个a
。
案例3:
if false
a=2
end
a #=> nil
defined? a #=> 'local-variable'
如果您比较案例 2 和案例 3,在案例 2 中它首先忽略了错误a
。a
我认为这是因为 ruby 的执行路径由于条件而没有到达变量false
。在案例 3 中进行赋值时也是如此。它为我提供了a
定义但具有nil
值的变量。有人可以解释它的工作原理吗?