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

时间:2015-10-25 13:44:33

标签: scala

我知道函数可以接收{/ 1}}类型的arg,如

=> A

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

2 个答案:

答案 0 :(得分:9)

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

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

def thunkInc(i: Int): () => Int = () => { println(i); i + 1 }

=> Int不同,您需要"呼叫"获得价值的thunk:

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

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

scala> ten()
9
res6: Int = 10

cats library还提供Eval类型,以更灵活的方式抽象评估策略。

答案 1 :(得分:-1)

你可以完成它,示例代码;

scala> def funcReturn: () => Unit = () => {println("Returned Function")}
funcReturn: () => Unit

scala> val ret = funcReturn
ret: () => Unit = <function0>

scala> ret()
Returned Function