我正在玩scala提升,我偶然发现Scala似乎对lambda表达式有一些隐含的支持。
import scala.reflect.Code
import scala.reflect.Function
import scala.reflect.Select
object Test {
trait Foo {
def aMethod : String
}
val ast : Code[_] = (f:Foo) => f.aMethod
//now you can pattern match the AST
val Function(_, Select(_, symbol))= ast.tree
val nameOfAMethod = symbol.name
println(nameOfAMethod) //prints "aMethod"
}
ast将在右侧为lambda设置AST。
似乎不适用于文字,所以:
val ast : Code[_] = 42
不起作用。
但这样做:
val ast : Code[_] = () => 42
我似乎无法找到它的文档。似乎没有任何隐式转换处于活动状态。这是如何运作的?