このページは、コレクション パイプライン パターンの操作について説明します。詳細については、次の内容をお読みください。
- コレクション パイプライン記事: コレクション パイプライン パターンの説明記事
- 操作カタログ: これらのページに記載のある選択された操作のリスト。
フィルタ
各要素でブール関数を実行し、合格したものだけを出力に入れます。
この関数を使用して、作業に使用するインプットの項目のみを保持できます。たとえば
ruby…
[1,2,3,4].select {|i| i.even?} # => [2, 4]
clojure…
(filter even? [1 2 3 4]) ;; => (2 4)
多くの言語では、この操作に対して「選択」という用語を使用します。「選択」という表現の利点は、「拒否」を自然な補完にすることです。
ruby…[1,2,3,4].select {|i| i.even?} # => [2, 4] [1,2,3,4].reject {|i| i.even?} # => [1, 3]
言語が「フィルタ」を使用する場合は、「拒否」に「削除」が使用されることがあります。
「選択」を名前として使用することの最大の問題は、一部のライブラリ(dot net の Linq など)で「選択」をマップの名前として使用することです(sql の「選択」は、特定の形式のマップである、フィールドのサブセットをプロジェクトします)。
多くの操作と同様に、ハッシュのフィルタリングには問題があります。キーと値に単一の引数を構造分解することは、Clojure などのそれをサポートする言語では適切に機能します。
clojure…(filter (fn [[k,v]] (> v 2)) {:BR 5, :IT 4, :ES 1} ) ;; => ([:IT 4] [:BR 5])
OO 言語は、ハッシュ クラスで定義されたフィルタ操作を持つ必要があります。ruby はこれを「選択」で行います。
ruby…{BR: 5, IT: 4, ES: 1}.select{|k,v| v > 2} # => {:BR=>5, :IT=>4}