当前位置:  开发笔记 > 前端 > 正文

如何使用Kotlin在`while`循环内的`when`语句中`continue`或`break`

如何解决《如何使用Kotlin在`while`循环内的`when`语句中`continue`或`break`》经验,为你挑选了2个好方法。

我正在将一个大型项目转换为Kotlin.有许多挑战.我学习Kotlin的新模式就是其中之一.希望我可以使用一种模式来解决这个问题.

这是我试图实现的代码.但是,continue并且breakwhen声明中无效.

while (!mStopped && c.moveToNext()) {

    val itemType = c.getInt()
    when (itemType) {
        1, 2 -> {
            doSomething()
            if (condition)
                continue
            doSomethingElse()
        }
    }
    doTheLastStuff()
}

这是代码的一个非常简化的版本.原始的Java代码有switch语句中的行100的,和很多continue的和break的.

我想要实现的是继续执行while声明.在Kotlin这样做的模式是什么?



1> miensol..:

您可以使用标签继续/打破循环,即:

myLoop@ while (!mStopped && c.hasNext()) {

    val itemType = c.next()
    when (itemType) {
        1, 2 -> {
            doSomething()
            if (condition())
                continue@myLoop
            doSomethingElse()
        }
    }
    doTheLastStuff()
}

以下是文档的相关摘录:

Kotlin中的任何表达都可以用标签标记.标签的形式为标识符,后跟@符号,例如:abc @,fooBar @是有效标签(...)使用标签限定的中断在标有该标签的循环后立即跳转到执行点.继续进行到该循环的下一次迭代.



2> voddan..:

这里的问题是,breakcontinue有一个内部的特殊含义when的语句,即突破和持续的when本身,而不是周围的循环.目前(kotlin 1.0)语法尚未确定,因此尽管保留了关键字,但该功能仍无效.

要解决此问题,请使用标签https://kotlinlang.org/docs/reference/returns.html#break-and-continue-labels:

loop@ while (...) {
    when (itemType) {
        1 -> continue@loop
        else -> break@loop
    }
}

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有