【发布时间】:2013-07-19 06:19:45
【问题描述】:
为什么匿名函数中的显式返回语句(使用return 关键字)从封闭的命名函数返回,而不仅仅是从匿名函数本身返回?
例如以下程序导致类型错误:
def foo: String = {
((x: Integer) => return x)
"foo"
}
我知道建议避免使用 return 关键字,但我感兴趣的是为什么显式和隐式返回语句在匿名函数中具有不同的语义。
在以下示例中,返回语句在m 执行完毕后“存活”,程序导致运行时异常。如果匿名函数没有从封闭函数返回,则无法编译该代码。
def main(args: Array[String]) {
m(3)
}
def m: (Integer => Unit) =
(x: Integer) => return (y: Integer) => 2
【问题讨论】:
标签: scala return closures anonymous-function