在ruby docs中,有以下文字:
块参数实际上是局部变量。如果块执行时存在同名的现有本地,则通过调用该块来修改该变量。这可能是也可能不是一件好事。
我写了下面的代码来测试这个:
x = 0
3.upto(6) {|x| puts x}
puts x
# output are:
# 3
# 4
# 5
# 6
# 0
变量x
未更改。为什么?这是针对文档的。
答案 0 :(得分:6)
在Ruby 1.8及更早版本中,就是这种情况。从1.9开始,块变量影响局部变量。
因此,简而言之:您正在阅读的文档和您正在测试的Ruby不是同一版本。