我已经定义了一个宏,我正在尝试测试作为参数传递的值之一以确定如何发出代码。但是,当我尝试使用该值时,我不断收到错误。这是一个说明问题的简单测试:
let Test = macro {
case {
_ ($arg1,$arg2,$arg3)
} => {
if ($arg1 ==1) {
return #{
f($arg1,$arg2,$arg3)
}
} else {
return #{
g($arg1,$arg2,$arg3)
}
}
}
}
Test(1,2,3)
我得到的错误是:
ReferenceError: $arg1 is not defined
我通过调用 makeIdent、syntaxUnwrap 等进行了各种尝试,但没有任何运气。如何测试通过的值?
更新:在玩了一些东西之后,我发现我可以使用这个构造来获取值:
#{$arg1}[0].token.value
但后来我发现这个页面建议在某一时刻token.value.raw
使用而不是token.value
,这进一步表明,由于我没有通过官方记录的 API,我可能正在访问可能会更改的未记录的内部结构。