对比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的主要内容,如果未能解决你的问题,请参考以下文章

对比Java学Kotlin在 foreach 中使用 break&continue

对比Java学Kotlinfor 循环方式

对比Java学Kotlin密封类

对比Java学Kotlin密封类

对比Java学Kotlin密封类

对比Java学Kotlin常量