hy - 宏字符串插值/如何在字符串中取消引用?
问题描述
我有一个像这样的宏:
(defmacro test [x] `"~x")
运行后展开如下:
=> (test abc)
'~x'
为什么不展开到'abc'
?
在字符串中取消引用的正确方法是什么?
解决方案
我很困惑为什么你期望这会起作用,我不清楚你想要什么。~
在您的示例中是字符串文字,因此它是普通字符串字符,而不是运算符,与返回和 not~
的方式相同。((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"
推荐阅读
- batch-file - 如何打印带有特殊字符的参数
- r - 使用 dummyVars() 和 ifelse() 创建虚拟变量,有区别吗?
- ios - 如何挂钩 pod 安装错误或已完成
- python - AWS Step Function 中的 AWS Fargate 任务中的覆盖命令
- android - 运算符“<”不能无条件
- flutter - 单击 [Flutter] 时,DropdownMenu 未打开
- node.js - 如何在nodejs中集成payoneer
- c# - 我的统一预制件在一个接一个生成时没有运行脚本(使用 XR 控制器)
- c# - Microsoft Json 规则引擎自定义错误消息
- ios - Swift Detect UISlider 图像点击