ruby的block的作用域


1
2
3
4
5
6
7
8
9
hash = Hash.new
array = [1,2,3,4]
array.each do | val |
temp_array = Array.new
temp_array.push val
hash[val]=val
end
puts hash
puts temp_array

最终hash可以正常输入,temp_array会报错。

所以在block外部声明过的变量,block执行时时会把他绑定代入方法中,但是在block内部定义的额外绑定作用域只在其内部有效。