新手问题 如何理解块变量与块局部变量

LinuxGit · 2014年11月02日 · 最后由 richard 回复于 2016年01月27日 · 3481 次阅读
x = y = z = 0
ary = [1, 2 ,3]
ary.each do |x; y|
  y = x
  z = x
  p [x, y, z]
end
puts
p [x, y, z]

输出:

[1, 1, 1]
[2, 2, 2]
[3, 3, 3]

[0, 0, 3]

看书的这段代码,不太理解。 数组传递 x; y 是什么意思?求解,谢谢。

分号后面是 block 的 local variable x 是 caller 传进来的. 后面的 y 相当于在 block 里面 var 一下 y...

你这例子里就相当于在 block 里面 shadow 一个 y.这样给 y 赋值时候只影响 block 里面的 y,不影响外面的 y,所以最后 y 还是 0

#1 楼 @flypiggys 理解了,谢谢。原来,分号后面是 block 的 local variable。

5 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号