'返回'不会在Kotlin中脱颖而出 [英] 'return' doesn't jump out of forEach in Kotlin

查看:115
本文介绍了'返回'不会在Kotlin中脱颖而出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have this Kotlin code, why return@forEach doesn't jump out of forEach? It continues the loop until it finishes, removing reversed() doesn't solve problem:

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))

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

I tried replacing return@forEach with break@forEach but Kotlin compiler says :

错误:(785,25)标签'@forEach'不表示循环

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

推荐答案

这种方法怎么样?

rendered_words.reversed().firstOrNull { rw -> rw.y - the_top > 0 && rw.y - the_top < height }
?.let { new_top = it }
if(new_top != null) {
     smoothScrollTo(Math.min(text_y - height, new_top))
}

因为您似乎要尝试到达的是符合您条件的第一项,并且first/firstOrNull比forEach更好

because what you seem to try to get here is the first item that matches your condition, and the first/firstOrNull is better there than the forEach

这篇关于'返回'不会在Kotlin中脱颖而出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆