このページではコレクション パイプライン パターンの操作について説明します。さらに詳しい情報については、次の記事をお読みください。

平坦化

コレクションから入れ子を削除する

平坦化はコレクション内の入れ子を削除します。

ruby...
[[1,2, [3,4], 5], 6, [7,8]].flatten
# => [1, 2, 3, 4, 5, 6, 7, 8]
clojure...
(flatten [[1 2 [3 4] 5] 6 [7 8]])
;; => (1 2 3 4 5 6 7 8)

完全な平坦化は、入れ子のレベルをすべて削除します。一部のバージョンでは、引数を使用して限られた入れ子レベルを削除できます

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

マッピング後にこのように入れ子レベルを 1 つ削除するのは一般的です。よく見られるため、演算子 flat-map を使用してこのコンビネーションが行われます。

平坦化を 1 レベルだけ必要とする場合は、 flat-map を使用してそれを行うことができます。

clojure...
(defn flatten-1 [c]
  (mapcat #(if (coll? %) % [%]) c))

(flatten-1 [[1 2 [3 4] 5] 6 [7 8]])
;; => (1 2 [3 4] 5 6 7 8)