斯卡拉宏修改对象(Scala macro modify object)

2019-10-23 05:43发布

我有一个宏注释

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

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

Answer 1:

这是目前不可能,因为在斯卡拉宏不能修改其范围之外的任何内容。 例如高清宏只能重写他们的应用程序,而不是代码身边,和宏观注释只能重写他们的annottees,不在身边的代码。



文章来源: Scala macro modify object