【发布时间】:2021-06-01 22:10:37
【问题描述】:
我有一个类似的宏:
(defmacro test [x] `"~x")
运行后展开如下:
=> (test abc)
'~x'
为什么不扩展为'abc'?
在字符串中取消引用的正确方法是什么?
【问题讨论】:
标签: hy
我有一个类似的宏:
(defmacro test [x] `"~x")
运行后展开如下:
=> (test abc)
'~x'
为什么不扩展为'abc'?
在字符串中取消引用的正确方法是什么?
【问题讨论】:
标签: hy
我很困惑为什么你期望这会起作用,我不清楚你想要什么。 ~ 在你的例子中是一个字符串文字,所以它是一个普通的字符串字符,而不是 ~ 运算符,就像 ((fn [x] "x") 5) 返回 "x" 而不是 "5" 一样。
如果您想将传递给宏的模型字符串化,请使用str,如下所示:
hy 1.0a1+114.g2abb33b1 using CPython(default) 3.8.6 on Linux
=> (defmacro test [x] (str x))
<function test at 0x7fe0476144c0>
=> (test abc)
"abc"
【讨论】: