我想要一个可以像这样使用的宏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是一个向DB中插入内容并返回相应数据结构的函数。
但它不起作用:我得到“没有这样的var”错误
答案 0 :(得分:5)
它对我有用:
user=> (defmacro let-test [& body]
`(let [~'test-object1 123] ~@body))
#'user/let-test
user=> (let-test (+ test-object1 321))
444
您确定问题与SQL相关的调用无关吗?