我的理解是 ruby 块具有块范围,并且在块内创建的所有变量都将只存在于块内。
示例案例:
food = ['toast', 'cheese', 'wine']
food.each { |food| puts food.capitalize}
puts food
输出:
"Toast"
"Cheese"
"Wine"
"Wine"
如果您将food
变量放在块内(每个块),我的理解是它具有块范围。它只存在于块范围内,对外部变量没有任何影响food
。
但行为不同,food
在这种情况下,命名的外部变量被修改。这种理解是否正确,在红宝石中我们有块范围吗?