在宏定义之外使用reify

时间:2013-01-14 19:58:33

标签: scala scala-2.10 scala-macros

  

可能重复:
  What’s the easiest way to use reify (get an AST of) an expression in Scala?

在宏定义中,我可以在c.reify参数上使用Context将表达式转换为AST。

但是我希望能够通过传递AST来测试我的宏功能并看看它是什么。换句话说,给定:

def printf(format: String, args: Any*): Unit = macro printf_impl
def printf_impl(c: Context)(format: c.Expr[String], args: Expr[Any]*): c.Expr[Unit] = ....

我希望能够通过特定表达式生成AST,因此我可以进行单元测试或只是在REPL进行非正式测试

 printf_impl(c.reify("x%sy", c.reify(4 + 5))

但该表达式应该c是什么?

0 个答案:

没有答案