对比Java学Kotlin在 foreach 中使用 break&continue
Posted 陈蒙_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对比Java学Kotlin在 foreach 中使用 break&continue相关的知识,希望对你有一定的参考价值。
正常情况下,我们只能在 loop 中使用 break 和 continue。但是 foreach 是扩展函数,不属于 loop 的范畴,如果我们想在 foreach 中达到 break 和 continue 的效果,只能使用 return@label 来实现:
continue:
fun foo()
listOf(1, 2, 3, 4, 5).forEach lit@
if (it == 3) return@lit // local return to the caller of the lambda - the forEach loop
print(it)
print(" done with explicit label")
执行结果为:1245 done with explicit label
或者
fun foo()
listOf(1, 2, 3, 4, 5).forEach
if (it == 3) return@forEach // local return to the caller of the lambda - the forEach loop
print(it)
print(" done with explicit label")
执行结果为:1245 done with explicit label
break:
fun foo()
run loop@
listOf(1, 2, 3, 4, 5).forEach
if (it == 3) return@loop // non-local return from the lambda passed to run
print(it)
print(" done with nested loop")
执行结果:12 done with nested loop
如果是查询场景,建议使用 .map() 操作符来完成,从而避免 continue 或 break 语句。比如我们有一个字符串类型的 List [“1”, “2”, “3”],我们需要匹配的是 “2_”,则可以使用 map 操作符先将 List 的元素变形为 “n_” 的形式,然后直接使用 contains() 方法寻找其是否存在:
val target = "2_"
val match = listOf("1", "2", "3").map it.plus("_") .contains(target)
以上是关于对比Java学Kotlin在 foreach 中使用 break&continue的主要内容,如果未能解决你的问题,请参考以下文章