Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Array#flattenやHash#flattenでは平坦化の深さを指定する事ができる

Array#flattenやHash#flattenでは平坦化の深さを指定する事ができます。
数値が大きくなるほど、より深いレベルまで平坦化されます。
無指定ならば最大階層までやってくれます。

a = [1,2,[3,[4,5,[6,7,[8,9]]]]]
a.flatten
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

a.flatten(1)
#=> [1, 2, 3, [4, 5, [6, 7, [8, 9]]]]

よく使われるArray#flat_mapは深さを指定できません。
上記のような深い階層構造の場合は処理前にflattenして使うか、データ型を見直すべきです。