我有两组,需要创建第三组,其中将包括第一组中第二组中不存在的元素:
(? #{"a" "b" "c"} #{"b"}) ; -> ["a" "c"]
我知道disj
,但它仅在第二个参数是元素而不是集合时才有效。
如果你有两组,你可以使用set Difference:
user=> (require 'clojure.set)
user=> (difference #{"a" "b" "c"} #{"b"})
#{"a" "c"}
如果没有差异函数,您可能已经使用 reduce 轻松创建了它:
=> (reduce disj #{"a" "b" "c" "d"} #{"b" "d"})
#{"a" "c"}
Reduce 接受一个函数,一个初始的“累加器”和一个它映射的集合以修改累加器。在这种情况下,它将使用第一个集合作为累加器,从第二个集合中删除第一个项目,然后是下一个,等等。