在Scala中访问方法的AST

时间:2015-03-24 23:13:36

标签: scala scala-reflect

是否有反射方法来访问类方法'AST?

class Clazz {
    def hello(a: Int) = (a + 1).toLong
}

val src = 
"""
    class Clazz {
        def hello(a: Int) = (a + 1).toLong
    }
"""

我想得到这样的东西

scala> val a = 100
scala> showRaw(reify((a + 1).toLong).tree)
res2: String = Select(Apply(Select(Select(Select(Select(Select(Select(Ident($line11.$read), newTermName("$iw")), newTermName("$iw")), newTermName("$iw")), newTermName("$iw")), newTermName("a")), newTermName("$plus")), List(Literal(Constant(1)))), newTermName("toLong"))
结果是

我相信这将是一个编译时的世界。

0 个答案:

没有答案