我知道一个函数可以接受的类型的ARG => A作为
def add1(x: => Int): Int = {
x + 1
}
Run Code Online (Sandbox Code Playgroud)
但是如何在函数中返回这样的类型呢?
在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抽象了评估策略以更灵活的方式类型.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |