scala:如何在不调用的情况下在某处传递0-arg函数?

时间:2013-12-20 22:38:15

标签: scala

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?

1 个答案:

答案 0 :(得分:7)

您使用部分应用程序将方法(它不是真正的函数)myfunc“提升”到Function0

val i = new FuncUser(myfunc _)