android - 'return' 不会跳出 Kotlin 中的 forEach

标签 android kotlin

我有这段Kotlin代码,为什么return@forEach没有跳出forEach?它继续循环直到完成,删除 reversed() 并不能解决问题:

rendered_words.reversed().forEach  { rw ->
                    if (rw.y - the_top > 0 && rw.y - the_top < height) {
                        new_top = rw.y
                        return@forEach
                    }
                }
                smoothScrollTo(Math.min(text_y - height, new_top))

我尝试用 break@forEach 替换 return@forEach 但 Kotlin 编译器说:

Error:(785, 25) The label '@forEach' does not denote a loop

最佳答案

如果你想跳出forEach,你应该使用一个运行 block :

run breaker@ {
    rendered_words.reversed().forEach  { rw ->
        if (rw.y - the_top > 0 && rw.y - the_top < height) {
            new_top = rw.y
            return@breaker
        }
    }
}

关于android - 'return' 不会跳出 Kotlin 中的 forEach,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056994/

相关文章:

java - Gradle 不会导入 bintray 依赖项,但不会抛出任何错误

file - Ktor - 无内存泄漏处理大文件操作

reactjs - 如何修复它?错误任务:expo:compileDebugKotlin FAILED

kotlin - 从Kotlin中的lambda返回值的惯用方式

Android:使用 MoPub 中介但 Admob 报告展示次数为 0?

android - 可能有一个 Jenkins 构建失败测试,​​但不会使整个构建失败?

android - 如何在 firebase android 中使用 ListView 设置图像?

android - RxJava - 将列表的结果映射到另一个列表

android - Kotest(以前的 KotlinTest)在 Android Studio 中还能用吗?

android如何将捕获的图像保存到手机图库中