2015-05-31 97 views
1

我有一个宏注释斯卡拉宏观修改对象

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 {} 

的名字是否有可能与宏观找到对象和修改对象的身体吗?

回答

2

目前这是不可能的,因为Scala中的宏不能修改任何超出范围的东西。例如。 def宏只能重写他们的应用程序,而不是周围的代码,而宏注释只能重写他们的注解,而不是代码。