2013-07-03 49 views
1

有没有一种方法来获得解析树到scala中的对象的方法中找到的代码?据我所知,这是可能的,如下图所示的是作为参数传递给具体化方法传递一个表达式做...是否有可能获得scala中的方法的分析树?

import scala.reflect.runtime.universe._ 
    //I am able to retrieve a scala.reflect.api.Trees$Tree for this block of code... 
    val i=1 
    val tree1=reify{ 
     val b=i*3 
     println("b was "+b) 
    }.tree 
    println("tree1->"+tree1) 

    //Is it possible to obtain a tree for the block of code encapsulated in fooTest? 
    object foo{ 
     def fooTest(i:Int)={ 
      val b=i*3 
      println("b was "+b) 
     } 
    } 
+0

这个问题是非常不清楚的。你的代码是否表明你想要什么?你不想要什么?它是否编译?此外,'reify'返回'Expr' - 即Scala表达式的表示。我不清楚这是什么意思,以通过一种方法(静态或不)。 –

+0

使用你的建议,我试图说出我的问题,更具体地指出我想要做什么。感谢您的初步反馈。 – hickin

回答

1

如果你的问题是你是否可以解除在斯卡拉中定义的方法object(最接近“静态方法”)对于函数,答案是:

object O { 
    def oMethod(i: Int): String = i.toString 
    val oFunction = oMethod _ 
} 

scala> O.oMethod(23) 
res0: String = 23 

scala> O.oFunction(23) 
res1: String = 23 
+0

这不是我想要做的,但意识到我最初的问题是非常模糊的,并试图重述它。 – hickin

相关问题