我知道函数可以接收{/ 1}}类型的arg,如
=> A
但是如何在函数中返回这样的类型呢?
答案 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