1

我在玩 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

我似乎无法找到它的文档。似乎没有任何隐式转换处于活动状态。这是如何运作的?

4

0 回答 0