gpt4 book ai didi

macros - Nim 宏参数

转载 作者:行者123 更新时间:2023-12-01 11:32:12 32 4
gpt4 key购买 nike

这是我要编译的代码:

macro defineSomething(amount:expr):stmt=
var amountInt = intVal(amount).int
# Boring staff

defineSomething(42);

它工作得很好。我在我的宏中拥有我想要的一切我可以用我自己的方式运算符(operator)工。

但后来我认为,最好从某些 const 设置中删除魔数(Magic Number):

const MAGIC_AMOUNT:int = 42

# Whole lot of strings
defineSomething(MAGIC_AMOUNT)

此代码失败。因为 MAGIC_AMOUNT 从字面上看不是整数值,不像 42 魔数(Magic Number)。

那么,如何在 nim 的宏中获取我的变量值?

最佳答案

默认情况下,宏将接收 AST 表达式而不是值。如果您的宏需要使用具体值,则需要使用静态参数:

macro defineSomething(amount: static[int]): stmt=
echo "int value: ", amount + 100

const MAGIC_AMOUNT = 42

defineSomething(43)
defineSomething(MAGIC_AMOUNT)

这将在编译时打印:

int value: 143
int value: 142

关于macros - Nim 宏参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31269770/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com