【问题标题】:Macro string Interpolation / How to unquote inside string?宏字符串插值/如何在字符串中取消引用?
【发布时间】:2021-06-01 22:10:37
【问题描述】:

我有一个类似的宏:

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

运行后展开如下:

=> (test abc)
'~x'

为什么不扩展为'abc'

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

【问题讨论】:

    标签: hy


    【解决方案1】:

    我很困惑为什么你期望这会起作用,我不清楚你想要什么。 ~ 在你的例子中是一个字符串文字,所以它是一个普通的字符串字符,而不是 ~ 运算符,就像 ((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"
    

    【讨论】:

      猜你喜欢
      • 2015-07-01
      • 2021-05-23
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多