获取参数的文字值到sweet.js宏

时间:2015-10-20 18:04:47

标签: sweet.js

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

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我可能正在访问无法更改的内部文件。

0 个答案:

没有答案