【发布时间】:2019-02-19 13:23:51
【问题描述】:
我对 Kotlin 很陌生。我在查看文档时点击了这部分:
“一个 lambda 不能从封闭函数返回”(除非它是内联的)。
所以,这行不通;
fun foo() {
ordinaryFunction {
return // ERROR: cannot make `foo` return here
}
}
我想知道为什么它会这样工作?
我唯一能想到的事情是危险的,因为在 lambda 执行之后,封闭函数可能会做一些额外的事情。但我不确定这是否是原因,因为您可以通过使用合格的返回或使用 inline 关键字来克服这个问题。因此,这意味着它背后有一个技术原因(除了任何可用性/安全原因),例如编译器无法确定返回的位置,除非它被标记或内联。
任何帮助都会很棒!
【问题讨论】:
标签: function lambda kotlin anonymous-function