20

有没有办法:

a = b.map{ |e| #return multiple elements to be added to a }

a可以返回多个对象,而不是为要添加到的每次迭代返回单个对象。

我目前正在通过以下方式实现这一目标:

a = []
b.map{ |e| a.concat([x,y,z]) }

有没有办法在一行中做到这一点而不必预先声明a = []

4

2 回答 2

29

采用Enumerable#flat_map

b = [0, 3, 6]
a = b.flat_map { |x| [x, x+1, x+2] }
a # => [0, 1, 2, 3, 4, 5, 6, 7, 8]
于 2013-09-14T09:28:31.440 回答
0

使用 Enumerable#flat_map

这可能与以下内容没有太大区别:

p [1, 2, 3].map{|num| [1, 2, 3]}.flatten 

--output:-
[1, 2, 3, 1, 2, 3, 1, 2, 3]
于 2013-09-14T10:52:35.753 回答