【发布时间】:2012-01-03 04:32:22
【问题描述】:
对不起,这个非常模糊的标题:)
我是宏的新手,无法理解这两个语句之间的区别:
`(+ 1 2 ~(+ 2 3)) ; => (clojure.core/+ 1 2 5)
'(+ 1 2 ~(+ 2 3)) ; => (+ 1 2 (clojure.core/unquote (+ 2 3)))
当我在不加引号的情况下运行它们时,它们看起来除了排位赛之外几乎完全相同?
`(+ 1 2 (+ 2 3)) ; => (clojure.core/+ 1 2 (clojure.core/+ 2 3))
'(+ 1 2 (+ 2 3)) ; => (+ 1 2 (+ 2 3))
所以基本上我对 ` vs ' 感到困惑。我的理解是他们都引用了列表中的所有内容,这就是为什么我不确定为什么不引用的行为会有所不同。基本上 ` 的行为方式与我期望 ` 和 ' 的行为方式相同。
谢谢!
【问题讨论】: