在Kotlin中选择“何时”与“是否/其他”的标准是什么?

时间:2019-11-17 06:11:22

标签: java if-statement kotlin switch-statement

我正在进行从Java到Kotlin的转移,并了解Java开关和Kotlin when语句之间的差异。

我的问题是,当您在一系列“ if”和“ else if”块中选择“ when”时,差异是否会改变标准?

例如,在Java中,当存在5个或更多的情况时,“ switch”通常比“ else-ifs”更有效,否则,其效率大致相当。当语句为布尔值时,通常首选If-else。在科特林是否类似?在编写代码时,还有其他与Java不同的原因,例如可读性标准等。

我希望获得答案或与该主题进行更深入阅读的链接-我一直在努力寻找能够进行良好成本效益分析的资源。

3 个答案:

答案 0 :(得分:2)

与Java相比,Kotlin的优势是concise语法

  

何时有更好的设计。它比传统的开关更简洁,功能强大

还有更多readable与其他情况有关:

  

何时可以不带参数使用它。在这种情况下,它充当更精细的if-else链:条件是布尔表达式。与往常一样,选择匹配的第一个分支。假定这些是布尔表达式,则意味着选择了结果为True的第一个条件。

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

优点是,当表达式比一系列if-else语句更整洁,更易于理解时。

答案 1 :(得分:2)

来自Kotlin Coding Conventions
对于二进制条件,最好使用if而不是when。如果有三个或更多选项,请优先使用。

答案 2 :(得分:1)

我搜索了这个比较,但答案并没有让我信服,直到我阅读了 kotlin 的 control flow doc

使用When就像告别ifswitch强> 声明;

此外,您还可以在如下所示返回:

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

仍在学习 Kt,我惊讶于我们需要编写的代码少得多,而且比 Java 能做的多得多。