【发布时间】:2010-12-16 08:05:03
【问题描述】:
我想要一个可以像这样使用的宏 dbtest:
(dbtest
(prn test-object1)
(prn test-object2))
test-object1 和 test-object2 应该是由 dbtest 定义的变量(因为我每次使用 dbtest 宏时都需要它们)。 “prn”只是一个例子;我想在宏中使用任意代码。
我试过了:
(defmacro dbtest [& body]
`(sql/with-connection db
(delete-all-tables)
(let [~'test-object1 (insert-object "foo")]
~@body)))
其中 insert-object 是一个将某些内容插入数据库并返回相应数据结构的函数。
但它不起作用:我收到“没有这样的 var”错误
【问题讨论】:
-
对了,我相信你定义的变量叫做anaphora,就像这句话中的“它”:我喜欢巧克力,虽然它让我发胖。