【发布时间】:2014-03-10 23:02:26
【问题描述】:
注意:这是一个理论上的问题,我不是试图解决任何问题,也不是为了实际目的而达到任何效果
在 Scala 中使用 (arguments)=>expression 语法创建 lambda 时,是否可以显式提供返回类型?
Lambdas 与方法没有什么不同,它们都被指定为表达式,但据我了解,方法的返回类型很容易使用 def name(arguments): return type = expression 语法定义。
考虑这个(说明性的)示例:
def sequence(start: Int, next: Int=>Int): ()=>Int = {
var x: Int = start
//How can I denote that this function should return an integer?
() => {
var result: Int = x
x = next(x)
result
}
}
【问题讨论】:
-
您已经通过将
() => Int指定为sequence的返回类型来完成此操作。这已经强制您返回的 lambda 必须符合该类型,并且编译器将尝试这样解释它。 -
@ghik 这只是一个不幸的例子......