0

次のコードがあります。

>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}, ['number', 'Average Time']]
=> [["string", "User"], [["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]], ["datetime", "Average Time"]]

私がやりたいことは、渡された Foo 列挙可能な配列を単純にフラット化することです:

=> [["string", "User"], ["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"], ["datetime", "Average Time"]]

私は次のことを試しましたが、私が望んでいたことはうまくいきませんでした:

>[['string', 'User'], Foo.all.map {|c| ["number", c.name]}.flatten, ['number', 'Average Time']]
=> [["string", "User"], ["number", "Bar1", "number", "Bar2", "number", "Bar3"], ["datetime", "Average Time"]]

テスト時に、出力例で示されているようにFool.all.mapパーツを置き換えることができることに注意してください。[["number", "Bar1"], ["number", "Bar2"], ["number", "Bar3"]]

4

2 に答える 2

5

スプラット演算子を使用:

[
  ['string', 'User'], 
  *Foo.all.map { |c| ["number", c.name] }, 
  ['number', 'Average Time'],
]
于 2012-11-26T20:40:11.340 に答える
1

これを試して

([['string', 'User']] + Foo.all.map {|c| ["number", c.name]} + [['number', 'Average Time']])
于 2012-11-26T20:20:00.203 に答える