Scala函数定义与应用程序

Rpa*_*ant 1 scala

为什么以下代码片段中的f给出值1.我应该f()是1.如何获得对函数的引用f:()=> Int

var y = 0
def f():Int = {y + 1}

f
Run Code Online (Sandbox Code Playgroud)

斯卡拉的事情让我疯狂.

Aki*_*Aki 5

如果您正在调用没有参数的函数,则可以删除括号.这就是为什么f评估为1.

如果编译器知道您期望该类型的值,则完全相同的表达式也可以计算为函数引用.

val foo: () => Int = f
Run Code Online (Sandbox Code Playgroud)