def myfunc():Int = 10
class FuncUser( val func:()=>Int )
val i = new FuncUser( myfunc )
这会失败,因为会立即评估myfunc - 它的类型是Int,而不是()=> Int 如何直接将myfunc传递给FuncUser构造函数?
此外,这也有效:
val y4:()=>Int = myfunc
val j = new FuncUser( y4 )
但我对第一行成功的原因感到困惑?为什么在第二个例子中也没有立即评估myfunc?
答案 0 :(得分:7)
您使用部分应用程序将方法(它不是真正的函数)myfunc
“提升”到Function0
:
val i = new FuncUser(myfunc _)