Clojure 编程/示例/API 示例/函数工具
外观
(map (fn [a] (str "hi " a)) ["mum" "dad" "sister"])
; => ("hi mum" "hi dad" "hi sister")
请参阅 阅读器 页面,(宏字符 -> 分派 -> 匿名函数字面量)以了解用于引用函数参数的 '%' 和其他字符的解释。
user=> (def sq #(* % %))
#'user/sq
user=> (sq 3)
9
user=> (map #(class %) [1 "asd"])
(java.lang.Integer java.lang.String)
user=>
使用 fn,或者更好的是,可以使用自定义语法创建匿名函数
(map #(str "hi " %) ["mum" "dad" "sister"])
表示对未命名函数的可选参数
#(+ 2 %)
#(+ 2 %1 %2)
主体中的参数由采用 %、%n 或 %& 形式的参数字面量的存在来确定。% 是 %1 的同义词,%n 指定第 n 个参数(基于 1),%& 指定剩余参数。
用法: (complement f)
接受一个 fn f 并返回一个 fn,该 fn 接受与 f 相同的参数,具有相同的副作用(如果有),并返回相反的真值。
user=> (defn single-digit[x] (< x 10))
#'user/single-digit
user=> (single-digit 9)
true
user=> (single-digit 10)
false
user=> (def multi-digit (complement single-digit))
#'user/multi-digit
user=> (multi-digit 9)
false
user=> (multi-digit 10)
true