2

在定义 Scala 宏时,是否有从符号或类型到树的方法?

具体来说,该场景希望在伴随对象上查找文字。

在 Scala 代码中,这看起来像这样:

class Fred(a: String)

object Fred {
  val FredDescription = "hello"
}

在宏中,我可以访问 Fred 的 WeakTypeTag,并且可以使用它来访问同伴及其类型签名:

context.universe.weakTypeOf[A].typeSymbol.companionSymbol.typeSignature

但是我看不到任何访问文字或树以匹配伴随对象的文字的方式。

这可能吗?为某些任意类型或符号获取树是否有技巧?

4

1 回答 1

2

在某些情况下这是可能的,例如,当类型定义在您调用宏的同一个文件中时,但在一般情况下,我不希望这样做。

这是因为您正在检查的类型或符号可能来自已编译的类文件。在这种情况下,您正在寻找的树根本不存在。

于 2014-03-02T12:24:05.053 回答