2012-10-28 63 views
0

ruby docs同名,有這樣的文字:紅寶石塊參數具有本地變量

塊參數實際上是局部變量。如果在塊執行時存在相同名稱的現有本地,則該變量將通過對該塊的調用進行修改。這可能會也可能不會是一件好事。

我寫了下面的代碼來測試這個:

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

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

變量x不會改變。爲什麼?這是違反文檔。

+0

它不會在'枚舉器'中的x是塊參數,它的作用域僅限於塊內部,因爲其他'x'範圍內的代碼是 – Viren

回答

5

在Ruby 1.8及更早版本中,情況就是這樣。從1.9開始,塊變量映射局部變量。

所以,簡而言之:你正在閱讀的文檔和你正在測試的Ruby不是相同的版本。

+0

是的。謝謝 :-) – Yueyoum