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。
#1 楼 @flypiggys 非常感谢呀
#1 楼 @flypiggys 谢谢