Ruby块参数具有相同的局部变量名称

时间:2012-10-28 14:47:12

标签: ruby

ruby docs中,有以下文字:

  

块参数实际上是局部变量。如果块执行时存在同名的现有本地,则通过调用该块来修改该变量。这可能是也可能不是一件好事。

我写了下面的代码来测试这个:

x = 0
3.upto(6) {|x| puts x}
puts x

# output are:
# 3
# 4
# 5
# 6
# 0

变量x未更改。为什么?这是针对文档的。

1 个答案:

答案 0 :(得分:6)

在Ruby 1.8及更早版本中,就是这种情况。从1.9开始,块变量影响局部变量。

因此,简而言之:您正在阅读的文档和您正在测试的Ruby不是同一版本。

相关问题