clojure 变量定义 函数定义 宏定义

这篇文章介绍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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值