在Kotlin中选择“when”与“if/else”的标准是什么?

hrirmatl  于 2022-11-25  发布在  Kotlin
关注(0)|答案(3)|浏览(121)

我正在进行从Java到Kotlin的转换,并了解Java开关和Kotlin when语句之间的各种差异。
我的问题是,这些差异是否改变了你在一系列“如果”和“否则如果”块中选择“何时”的标准?
例如,在Java中,当有5种或更多的情况时,“switch”通常比“else-ifs”更有效,其他情况大致相当。当语句是布尔型时,If-else通常更受欢迎。这在Kotlin中类似吗?在编写代码时,我应该考虑与Java不同的其他原因吗?例如可读性标准等。
我将感谢答案或链接到更深入的阅读这个主题-我一直在努力寻找任何来源,做一个很好的成本效益分析。

vkc1a9a2

vkc1a9a21#

Kotlin相对于java的优点是concise语法
当有一个更好的设计。它比传统的开关更简洁和强大
此外,更多的readable与if else相关:
在这种情况下,它就像一个更好的if-else链:条件是布尔表达式。2和往常一样,第一个匹配的分支被选择。3如果这些是布尔表达式,这意味着第一个结果为真的条件被选择。

when {
    number > 5 -> print("number is higher than five")
    text == "hello" -> print("number is low, but you can say hello")
}

其优点是when**表达式比if-else语句链更清晰、更容易理解。

41zrol4v

41zrol4v2#

我搜索了这个比较,但答案并没有说服我,直到我读到Kotlin的control flow doc
使用***When***就像告别***if***和***switch***语句;
此外,您还可以在以下时间返回:

fun whatPosition(number: Int) : String{
        return when(number){
            1 -> "First"
            2 -> "Second"
            3 -> "Third"
            else -> "Loser"
        }
    }

还在学习Kt,我惊讶于我们需要写的东西少了多少,做的比java能做的多了多少。

jgwigjjp

jgwigjjp3#

根据Kotlin编码约定:
对于二元条件,首选使用if。如果有三个或更多选项,首选使用when
编辑:有趣的是,when语句必须是详尽的,所以如果我切换一个只有两个值的枚举,我将忽略这个标准,以便在枚举扩展时从编译错误中获益。

相关问题