函数

基本定义

最简单的函数定义是:

  1. (defn f1 [x y]
  2. (+ x y))
  3. ; #'cljs.user/f1

借助匿名函数也可以函数定义, 不过这样可能损失一些静态检查的好处:

  1. (def f2 (fn [x y]
  2. (+ x y)))
  3. ; #'cljs.user/f2

如果函数参数个数不确定, 可以用 & 把后边的参数合并成一个 list:

  1. (defn f3 [x1 & xs]
  2. (print x1)
  3. (print xs))
  4. ; #'cljs.user/f3

根据参数个数的不同, 函数可以被重载:

  1. (defn f4 [x] (+ x 1))
  2. ; #'cljs.user/f4
  3. (defn f4 [x y] (+ x y 1))
  4. ; #'cljs.user/f4

也可以简写在一个表达式当中:

  1. (defn f4
  2. ([x] (+ x 1))
  3. ([x y] (+ x y 1)))
  4. ; #'cljs.user/f4

调用函数

函数调用比较简单, 注意有个 apply 函数可以改变参数的传递方式:

  1. (f1 1 2)
  2. ; 3
  3. (apply f1 (list 1 2))
  4. ; 3