clojure 变量定义 函数定义 宏定义
程序员文章站
2022-05-21 09:19:58
...
这篇文章介绍clojure的变量,函数,宏的定义及调用
1. 变量定义
变量定义使用def关键字,clojure中的变量是常量,一旦定义就不可改变
另外变量定义是全局可见的,比如你在函数中使用def定义变量,执行该
函数后,在函数体外是可以访问该变量的
=>(def a 10);定义变量a的值
10
2. 函数定义
函数定义有多种方式,具体可看官方文档,这里以defn为例子
(defn name doc-string? attr-map? [params*] body
(defn name doc-string? attr-map? ([params*] body) + attr-map?)
例子:
=> (defn add [a b] (+ a b))
=>(add 1 2)
3
还可以用fn, 用于定义匿名函数
=> (def add (fn [a b] (+ a b)))
=>(add 1 2)
3
还可以用 读取器宏‘#’来定义匿名函数
=>(def add #(+ %1 %2)); %1,代表第一个参数
3. 宏定义
宏定义使用 defmacro,宏非常强大,也是一个难点,
- (defmacro name doc-string? attr-map? [params*] body)
- (defmacro name doc-string? attr-map? ([params*] body) + attr-map?)
以下定义了一个执行三次表达式的宏
=>(defmacro triple-do [form]
(list 'do form form form)
)
=>(triple-do (println "test")); 打印3次test
上一篇: clojure深入学习
下一篇: clojure hello world