我已经定义了一个宏,并且我试图测试作为参数传递的一个值来确定如何发出代码。但是,当我尝试使用该值时,我不断抛出错误。这是一个简单的测试,说明了问题:
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
但后来我发现this page表示曾使用token.value.raw
代替token.value
,这进一步表明我没有通过官方记录的API我可能正在访问无法更改的内部文件。