20

方法はありますか:

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

に追加される反復ごとに 1 つのオブジェクトを返すのではなくa、複数のオブジェクトを返すことができます。

私は現在これを達成しています:

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

前もって宣言することなく、これを1行で行う方法はあり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 に答える