Scala宏修改对象

时间:2015-05-31 08:23:20

标签: scala scala-macros

我有一个下一个宏注释

 class Foo(obj: String) extends StaticAnnotation {
    def macroTransform(annottees: Any*) = macro MacroImpl.impl
 }

 object MacroImpl {
    def impl(c: Context)(annottees: c.Expr[Any]*): c.Expr[Any] = {
      import c.universe._

      // i want find `obj` and modify body
    } 

 }

 // usage
 @Foo("pkg.myObject") class SomeClass {}

是否可以通过名称查找宏并修改对象的主体?

1 个答案:

答案 0 :(得分:2)

目前这是不可能的,因为Scala中的宏无法修改其范围之外的任何内容。例如。 def宏只能重写他们的应用程序,而不是代码,宏注释只能重写他们的注释,而不是代码。