我在Ruby中有以下内容:
arr = [1, 2]
arr.each{|n| arr << n unless n > 2_000}
如果我匿名定义,有没有办法从块中引用我的数组?
[1,2].each{|n| self << n unless n > 2_000}
还是什么?我猜不是因为我无法想出一种可以引用它的方式。
答案 0 :(得分:1)
迭代时更改数组可能会导致无限循环。
你可以在下面做:
arr = [1, 2]
arr += arr.select { |n| n <= 2000 }
答案 1 :(得分:1)
这里有类似的(虽然已过时)问题:
Call to iterating object from iterator
How to get a reference to a 'dynamic' object call?
你也可以用这种方式创建一个单行:
(arr = [1, 2]).each{|n| arr << n unless n > 2_000}
答案 2 :(得分:0)
[].tap { |e| e.concat([1,2,20000].select { |n| n <= 2000 })