如何编写一个返回类型为`=> Int`的函数?

qed*_*qed 1 scala

我知道一个函数可以接受的类型的ARG => A作为

def add1(x: => Int): Int = {
  x + 1
}
Run Code Online (Sandbox Code Playgroud)

但是如何在函数中返回这样的类型呢?

Tra*_*own 9

在Scala =>中,您可以使用特殊语法来指定方法的评估策略 - 它不是正确的类型,并且不能在方法应用程序的上下文之外使用.

定义一个不会立即完全评估的值的一个常用习惯是使用() => A:

def thunkInc(i: Int): () => Int = () => { println(i); i + 1 }
Run Code Online (Sandbox Code Playgroud)

与之不同=> Int,您需要"调用"thunk来获取值:

scala> val ten = thunkInc(9)
ten: () => Int = <function0>

scala> ten
res5: () => Int = <function0>

scala> ten()
9
res6: Int = 10
Run Code Online (Sandbox Code Playgroud)

猫库还提供了一个Eval抽象了评估策略以更灵活的方式类型.