因为你的方法
printFoo
获取lambda,您正在打印函数对象。
解决问题的一种方法是提供多个参数列表:
trait Test {
type Foo = String => Unit
def printFoo(f: Foo)(s: String) = {
f(s)
}
}
val foo : String => Unit = (s : String) => println(s)
val s = new Test {
override type Foo = String => Unit
}
s.printFoo(foo)("something")
// or reuse it:
val doFoo: String => Unit = s.printFoo(foo)
doFoo("something A...")
doFoo("something B...")