2

可能重复:
在 Scala 中使用 reify(获取 AST)表达式的最简单方法是什么?

在宏定义内部,我可以使用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那个表达式应该是什么?

4

0 回答 0