選択拒否

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

フィルタ

各要素でブール関数を実行し、合格したものだけを出力に入れます。

この関数を使用して、作業に使用するインプットの項目のみを保持できます。たとえば

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}