kotlin - 如何从 Kotlin 中的匿名 lambda 返回?
问题描述
如何从 Kotlin 中的匿名 lambda 返回?
不知何故,编译器不允许在 lambda 体内返回。由于 lambda 是匿名的return@...
,因此这里不可能。
class Foo {
var function: (String) -> Unit = { _ -> }
init {
function = { text ->
if (text == "foo"){
// do side effects here
return
//'return' is not allowed here
//This function must return a value of type Foo
}
// do side other side effects
}
}
}
编辑:更新示例,因此很明显这个问题是关于 return 语句而不是编码实践
解决方案
使用标签:
class Foo {
var function: (String) -> Unit
init {
function = function@ { text ->
if (text == "foo"){
return@function
}
print(text)
}
}
}
推荐阅读
- excel - 通过运行相同的 VBA 增大 Excel 工作簿的大小
- laravel - 调用相关文章时检查父类是否未发布?
- javascript - 事件开始后如何防止车轮
- azure - 监控 Java Native Interface 应用程序
- c# - 无法从 HttpClient 发送的 HttpContext 获取证书
- asp.net-core - Xamarin.Forms 如何在 id 之后从列表中删除单行?
- cucumber - 如何描述小黄瓜在 Given 子句中检索访问令牌的场景
- sql-server - 为什么 Powershell 导入数据在 SQL Server 中放置一个空行?
- ios - 为什么警报解除后@state被重置
- c - 我的 While 循环没有给出它应该给出的值