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