对比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
以上是关于对比Java学Kotlin在 foreach 中使用 break&continue的主要内容,如果未能解决你的问题,请参考以下文章