In Ruby (v2.5.0(...
[1,2,3].map do |i|
if i.eql?(3)
a = 123
end
defined?(a)
end
=> ["local-variable", "local-variable", "local-variable"]
有人可以向我解释一下,如果直到第三次迭代才设置,a
如何在第一次和第二次迭代中成为local-variable
(等于 nil
(?
提前感谢!
我将引用A.Black的一本书来回答:《扎根的Rubyist》,第6章,第158页。(2014年第二版(:
当 Ruby 解析器看到序列标识符、等号和值时,如此表达式中,
a = 123
它为局部变量分配空间 a
。变量的创建 - 不是为其赋值,而是变量的内部创建 - 总是作为这种表达式的结果发生,如果代码未执行,则为事件。