我有一个下一个宏注释
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 {}
是否可以通过名称查找宏并修改对象的主体?
答案 0 :(得分:2)
目前这是不可能的,因为Scala中的宏无法修改其范围之外的任何内容。例如。 def宏只能重写他们的应用程序,而不是代码,宏注释只能重写他们的注释,而不是代码。