请参阅每个/块中的匿名数组

时间:2014-03-14 03:58:21

标签: ruby arrays block each enumerable

我在Ruby中有以下内容:

arr = [1, 2]
arr.each{|n| arr << n unless n > 2_000}

如果我匿名定义,有没有办法从块中引用我的数组?

[1,2].each{|n| self << n unless n > 2_000}

还是什么?我猜不是因为我无法想出一种可以引用它的方式。

3 个答案:

答案 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 })