参数和 Arity

可以使用零个或多个参数定义 Clojure 函数。

(defn welcome
    "Without parameters"
    []
    "Hello!")

(defn square
    "Take one parameter"
    [x]
    (* x x))

(defn multiplier
    "Two parameters"
    [x y]
    (* x y))

元数

函数所需的参数个数。函数支持 arity 重载,这意味着 Clojure 中的函数允许多个 set 参数。

(defn sum-args
  ;; 3 arguments
  ([x y z]
     (+ x y z))
  ;; 2 arguments
  ([x y]
     (+ x y))
  ;; 1 argument 
  ([x]
     (+ x 1)))

精灵们不必做同样的工作,每个人都可以做一些无关的事情:

(defn do-something
  ;; 2 arguments
  ([first second]
     (str first " " second))
  ;; 1 argument 
  ([x]
     (* x x x)))