Iは、(1)2素子アレイの要素の配列である、または(2)アレイ下記ルビー内側平坦化(配列の配列)
[
[[0, :a], [2, :b]],
[3, :c],
[4, :d],
[[5, :e], [6, :f], [7, :g]]
]
ような配列を有します2要素アレイ。
私は、(2)の要素がルートレベルの要素に展開されるように、この配列を「平坦化」するためのエレガントな方法を見つけようとしています。この例では:
[[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]]
depth
は、実際の配列が非常に大きくなる可能に裏返しではなく、外部から動作するように
を必要とするので、私はしません除いこれは、ほとんどArray#flatten(depth)
を使用してのようなものです。パフォーマンス上の理由から、ループ内の新しい配列に(<<
)要素をプッシュしたいとします。何らかの理由で、私はmap
、flatten
、、または他のより効率的なEnumerable
メソッドの組み合わせをどのように使用してC++スタイルのpreallocate-and-populateループを記述することなくこれを達成するか考えることはできません。誰でもこれを行うもっとRuby的な方法を考えることができますか?行うには