このページはコレクションパイプラインパターンの操作について説明しています。詳細については、以下を参照してください。
- コレクションパイプライン記事:コレクションパイプラインパターンを説明する記事
- 操作カタログ:これらページがある選択された操作のリストです。
違い
提供されたリストの内容をパイプラインから削除します
ruby…
[1,1,2,2,3,4] - [1,3] # => [2, 2, 4]
clojure…
(remove #{1 3} [1 1 2 2 3 4]) ;; => (2 2 4)
Difference(差分)は、主にネストされた演算子式のコンテキストで使用される演算子ですが、パイプラインでも便利です。
要素の指定されたリストを削除するための適切に構成されたフィルターをいつでも使用できるため、filterがあれば厳密には必要ありません。確かに、実際のクロージャーの例がこれを行っています。クロージャーのセットは、引数がリストのメンバーであるかどうかをテストする関数として使用できるためです。
ruby…[1,1,2,2,3,4].reject {|i| [1,3].include? i} # => [2, 2, 4]
Rubyの場合、rejectを使用するとより冗長になりますが、パイプラインでインフィックス演算子を使用すると表示される messy tanglesを回避できます。
Differenceはセット演算として見られることがよくありますが、一般的にこの種の演算は重複を削除しようとします。(Clojureにはclojure.setに適切なセット差分関数がありますが、セットでのみ機能し、引数の順序はスレッド演算子では機能しません。)