このページではコレクション パイプライン パターンの操作について説明します。さらに詳しい情報については、次の記事をお読みください。
- コレクション パイプラインの記事: コレクション パイプライン パターンの説明記事
- 操作カタログ: これらのページがある、選択した操作のリスト。
平坦化
コレクションから入れ子を削除する
平坦化はコレクション内の入れ子を削除します。
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)