Clojure defmacro

defmacro
(defmacro name doc-string? attr-map? [params*] body)
 
(defmacro name doc-string? attr-map? ([params*] body) + attr-map?)
 
defn 类似,但 defmacro 定义的函数名被声明为宏,当这个定义的函数名被调用的时候,编译器认为它是 一个宏。
 
例子:
user=> (defmacro tbtest [pred a b]
  #_=>   (if (not pred) a b))
#'user/tbtest
 
user=> (tbtest false "aaaa" "bbbb")
"aaaa"
user=> (tbtest true "aaaa" "bbbb")
"bbbb"
<!--[if ppt]--> <!--[endif]-->
<!--[if ppt]--> <!--[endif]-->
 

猜你喜欢

转载自lobin.iteye.com/blog/2326255