此頁面描述收集管線模式中的運算。如需更多背景資訊,請閱讀

差異

從管線中移除提供的清單內容

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)

差異作為運算子,主要用於巢狀運算子表達式的背景中,但在管線中也很有用。

嚴格來說,如果你有篩選器,則不需要它,因為你總是可以用適當設定的篩選器來移除給定的元素清單。(事實上,這就是 clojure 範例實際執行的動作,因為 clojure 集合可以用作測試其引數是否為清單成員的函式。)

ruby…
[1,1,2,2,3,4].reject {|i| [1,3].include? i}
# => [2, 2, 4]

在 Ruby 的案例中,使用 reject 較為冗長,但避免了在管線中使用中綴運算子時可能出現的混亂糾結

差異通常被視為集合運算,但通常這些類型的運算會嘗試移除重複項。(Clojure 在 clojure.set 中有適當的集合差異函式,但它只適用於集合,而且其引數順序無法與執行緒運算子搭配使用。)