Clojure中的多方防守 - 第一场比赛是先发球吗?

时间:2014-04-15 19:18:37

标签: clojure overloading arity defn

具体而言,在以下情况下会发生什么:

(defn avg
  ([] 0)
  ([& args] (/ (reduce + args) (count args))))

(avg)

即,我可以依靠clojure总是返回0而不是归零吗?

1 个答案:

答案 0 :(得分:6)

可以依靠Clojure返回0而不是归零。但它并不首先匹配,首先服务:

(defn avg
  ([& args] (/ (reduce + args) (count args)))
  ([] 0))

(avg)
; 0

特定的arities优先于 rest 参数,如here所述。