在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
(等于<script src="/js/gifler.min.js"></script>
)的情况,如果在第三次和第二次迭代中未设置...
迭代?
提前致谢!
答案 0 :(得分:2)
我将回答引用A.Black的一本书: Well Ground Ground Rubyist ,第6章,p。 158.(2014年第二版):
当Ruby解析器看到序列标识符,等号和值时,就像在此表达式中一样,
a = 123
它为局部变量a
分配空间。变量的创建 - 不是为它赋值,而是为变量的内部创建 - 总是作为这种表达式的结果发生,如果代码没有被执行则发生。