宏字符串插值/如何在字符串内取消引用?

银龙

我有一个宏,如:

(defmacro test [x] `"~x")

运行后,它扩展为以下内容:

=> (test abc)
'~x'

为什么不扩展到'abc'

在字符串中取消引用的正确方法是什么?

密码学家

我很困惑你为什么期望这个工作,我不清楚你想要什么。~在您的示例中是字符串文字,因此它是一个普通的字符串字符,而不是~运算符,与((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"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章