1

我有两组,需要创建第三组,其中将包括第一组中第二组中不存在的元素:

(? #{"a" "b" "c"} #{"b"}) ; -> ["a" "c"]

我知道disj,但它仅在第二个参数是元素而不是集合时才有效。

4

2 回答 2

7

如果你有两组,你可以使用set Difference

user=> (require 'clojure.set)
user=> (difference #{"a" "b" "c"} #{"b"})
#{"a" "c"}
于 2013-01-08T16:31:27.160 回答
2

如果没有差异函数,您可能已经使用 reduce 轻松创建了它:

=> (reduce disj #{"a" "b" "c" "d"} #{"b" "d"})
#{"a" "c"}

Reduce 接受一个函数,一个初始的“累加器”和一个它映射的集合以修改累加器。在这种情况下,它将使用第一个集合作为累加器,从第二个集合中删除第一个项目,然后是下一个,等等。

于 2013-01-09T08:30:54.457 回答