跳轉到內容

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

[編輯 | 編輯原始碼]

用法: (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
華夏公益教科書