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