问题描述
我有一个宏:
(defmacro test [x] `"~x")
运行后展开如下:
=> (test abc)
'~x'
为什么不扩展到 'abc'
?
在字符串中取消引用的正确方法是什么?
解决方法
我很困惑为什么您希望这会起作用,而且我不清楚您想要什么。 ~
在你的例子中是一个字符串文字,所以它是一个普通的字符串字符,而不是 ~
运算符,就像 ((fn [x] "x") 5)
返回 "x"
而不是 {{1 }}。
如果您想对传递给宏的模型进行字符串化,请使用 "5"
,如下所示:
str