在定义Scala宏时,无论如何都要从符号或类型转到树?
具体而言,该场景需要在配对对象上查找文字。
在scala代码中,这看起来像这样:
class Fred(a: String)
object Fred {
val FredDescription = "hello"
}
在宏中,我可以访问Fred的WeakTypeTag,并且可以使用它来访问随播广告及其类型签名:
context.universe.weakTypeOf[A].typeSymbol.companionSymbol.typeSignature
但是我看不到任何访问文字或树的方法来匹配伴侣对象的文字。
这可能吗?为某些任意类型或符号获取树是否有技巧?
答案 0 :(得分:2)
在某些情况下可能会出现这种情况,例如:当类型在您调用宏的同一文件中定义时,但在一般情况下我不希望这样。
这是因为您正在检查的类型或符号可能来自已编译的类文件。在这种情况下,您正在寻找的树根本不存在。