【发布时间】:2013-05-10 10:03:56
【问题描述】:
如果我有:
2.times do
i ||= 1
print "#{i} "
i += 1
print "#{i} "
end
我得到了1 2 1 2,而我期待的是1 2 2 3。为什么循环重新开始时i 会丢失其分配?如果分配发生在循环之外,它的行为与预期一样,所以我猜它与范围有关,但我没有意识到循环有自己的范围。有人可以澄清一下吗?
更新:感谢您对此的帮助。我的部分困惑源于从 Python 进入 Ruby,它没有块作用域(我认为)。
【问题讨论】:
-
这是为了教学目的吗?因为这种代码完全不习惯......
标签: ruby block variable-assignment