scala函数文字中的`=>`

use*_*791 3 scala function

=>在下面的函数文字中,第二个含义是什么?

val result: () => Int = () => throw new RuntimeException
result: () => Int = <function0>
Run Code Online (Sandbox Code Playgroud)

ka4*_*eli 7

在类型声明中,val result: () => Int它只是一种声明函数类型的简单方法:

() => Int 是相同的 Function0[Int]

() => throw new RuntimeException是一个函数声明,=>并将参数与body分开.因此,它声明了一个没有参数和正文的匿名函数 throw new RuntimeException.它相当于:

def f() = throw new RuntimeException
Run Code Online (Sandbox Code Playgroud)

  • @Chirlo那是错的,那是两个不同的东西,`()=> Int`是一个不带参数并返回Int的函数,`f:=> Int`意味着f被懒惰地评估,但它绝对不是函数. (2认同)