Kotlin “when” 不带中断(java 中 switch case 具有的选项)

Kra*_*tos 9 android kotlin

当我写的时候:

num = 3
switch (num){
        case num < 2:
            Log.d("int", "3");
        case num > 2:
            Log.d("int", "2");
        case num > 0 :
            Log.d("int", "1");
        case num > 40:
            Log.d("int", "10");
    }
Run Code Online (Sandbox Code Playgroud)

这将打印案例 2 和案例 3。

我想在 kotlin 中做同样的事情,而不是在这种情况下使用多个 if/else 语句。When{} 对我没有帮助,因为据我所知,当我们输入大小写时它有一个强制中断,并且它不会进一步遍历大小写。有谁知道这个问题的好解决方案吗?

fur*_*kan 13

您所要求的是允许fallthrough在 switch 语句中使用。Kotlin 不支持这一点when

允许失败很容易导致错误,因为它不够明确。Jetbreans 团队似乎有一个“暂定计划”,支持continue在 when 语句中使用关键字以允许失败。这会让事情变得明确。

stackoverflow中建议了一些解决方法,但使用多个 if 语句可能是目前 Kotlin 最干净的方法。

以下是 kotlinlang 中对此的讨论:https ://discuss.kotlinlang.org/t/fall-through-in-when/2540