Clojure中的Arity重载

时间:2013-07-04 18:51:08

标签: clojure arity

为什么以下功能在Clojure中不起作用:

(defn tests
  [] 0
  [a b] 1)

它出现以下错误:clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: Unable to resolve symbol: a in this context

2 个答案:

答案 0 :(得分:7)

每个都需要用括号括起来

(defn tests 
  ([] 0) 
  ([a b] 1))

答案 1 :(得分:0)

如果您想要超过2倍的var,请使用& more:

(defn maxz
  "Returns the greatest of the nums."
  ([x] x)
  ([x y] (if (> x y) x y))
  ([x y & more]
   (reduce maxz (maxz x y) more)))
  

(最大1 2 3 4 5 100 6)

     

=> 100