如何使用Clojure';什么是不同的?集合上的函数?
Clojuredistinct?方法不接受集合,而是接受参数列表如何使用Clojure';什么是不同的?集合上的函数?,clojure,Clojure,Clojuredistinct?方法不接受集合,而是接受参数列表 (distinct? x) (distinct? x y) (distinct? x y & more) 因此(distinct?0 0 0)正确返回false,而(distinct?[0 0 0 0 0])返回true。如何在集合上使用distinct?,以便将集合[0]传递给它将返回false,因为集合包含重复项 我确实意识到该函数的执行是正确的,但我正在寻找一种技巧,将其应用于集合的内容,而不是参数列表 作为解决办
(distinct? x)
(distinct? x y)
(distinct? x y & more)
因此(distinct?0 0 0)正确返回false,而(distinct?[0 0 0 0 0])返回true。如何在集合上使用distinct?,以便将集合[0]传递给它将返回false,因为集合包含重复项
我确实意识到该函数的执行是正确的,但我正在寻找一种技巧,将其应用于集合的内容,而不是参数列表
作为解决办法,我目前有
(defn coll-distinct? [coll]
(= (distinct coll) coll))
但是我觉得我缺少了一种更优雅的方法来重用distinct?如果您想将参数作为seq传递给函数,请使用
apply
(apply distinct? [1 2 3 1])
; false
(apply distinct? [1 2 3])
; true
lol,一个将其“应用”到contentshow的技巧在集合为空的情况下会起作用吗?@KenLiu没有0-arity
distinct?
表单,因此(apply distinct?[])
抛出一个“错误的args(0)”ArityException,与(distinct?
相同。将其与具有0-arity形式的++
进行比较:(+)
和(apply++[])
都返回0
。