2

我已经定义了一个宏,我正在尝试测试作为参数传递的值之一以确定如何发出代码。但是,当我尝试使用该值时,我不断收到错误。这是一个说明问题的简单测试:

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,我可能正在访问可能会更改的未记录的内部结构。

4

0 回答 0