android - 如何在 Kotlin 的 forEach 之外返回?

标签 android kotlin

<分区>

我希望返回forEach外的aa@logError("Done")行,但是return@aa不行, 而 break@label 也不起作用。

而且,如果您使用return,它将在有趣的lookForAlice 之外返回!

data class Person(val name: String, val age: Int)
val people = listOf(Person("Paul", 30), Person("Alice", 29), Person("Bob", 31))


fun lookForAlice(people: List<Person>) {
    people.forEach label@{
        logError("Each: "+it.name)
        if (it.name == "Alice") {
            logError("Find")                                 
            return@aa  //It's fault
        }
    }
    aa@ logError("Done")
}

lookForAlice(people)

最佳答案

使用传统的“for-each”循环方式。

即改变

people.forEach label@{

for (it in people) {

并将return更改为break


注意:阅读这些关于 `.forEach()` 中的 `return` 的文章

`break` and `continue` in `forEach` in Kotlin

How do I do a "break" or "continue" when in a functional loop within Kotlin? (问题可能与此链接重复)

关于android - 如何在 Kotlin 的 forEach 之外返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51586508/

相关文章:

java - Android 比例动画 - 反转问题

Android 的幻灯片菜单库的 Java 实现

java - 带有 ? 的对象在 Kotlin 中转换为 java 中的 @org.jetbrains.annotations.Nullable

kotlin - Delay()准确性问题/作业调度程序的异常行为

Kotlin 自定义作用域函数返回类型未按预期运行

android - 检测到 PopupMenu 在 API 级别 11 上关闭

java - Vector3 赋值似乎被忽略

php - 使用Retrofit、PHP、JSON和WAMP从Android应用程序获取Mysql数据库的信息

Kotlin - 泛型函数引用

android - 如何在 Jetpack Compose 中制作虚线/虚线?