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

man*_*ank 2 overloading clojure defn arity

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

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

(avg)
Run Code Online (Sandbox Code Playgroud)

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

Thu*_*ail 6

可以依靠Clojure返回0而不是归零.但这不是第一场比赛,先到先得:

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

(avg)
; 0
Run Code Online (Sandbox Code Playgroud)

具体arities优先于其他参数,如所描述这里.