在编写一个以多个集合作为输入的函数时,我希望能够输出它们的集合。到目前为止,我已经写下了这个功能:
(defn foo [x y]
(clojure.set/union x y))
但是也尝试了一些
(defn foo
([x y] (clojure.set/union x y))
([x y & args] (clojure.set/union x y args)))
输出不匹配的时髦结果
(clojure.set/union #{1 2 3} #{2 3 4} #{4 5 6})
显然,我在尝试构建foo时,缺少set函数的一些简单实现,这是一个多元arity函数。
答案 0 :(得分:2)
你的问题是args
是一个包含你在前两个之后传递的所有集合的Seq,但是union函数希望它的参数是set。
你想要的是apply
功能:
(defn foo
([x y] (clojure.set/union x y))
([x y & args] (apply clojure.set/union x y args)))