我正在进行从Java到Kotlin的转移,并了解Java开关和Kotlin when语句之间的差异。
我的问题是,当您在一系列“ if”和“ else if”块中选择“ when”时,差异是否会改变标准?
例如,在Java中,当存在5个或更多的情况时,“ switch”通常比“ else-ifs”更有效,否则,其效率大致相当。当语句为布尔值时,通常首选If-else。在科特林是否类似?在编写代码时,还有其他与Java不同的原因,例如可读性标准等。
我希望获得答案或与该主题进行更深入阅读的链接-我一直在努力寻找能够进行良好成本效益分析的资源。
答案 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就像告别if和switch强> 声明;
此外,您还可以在如下所示返回:
fun whatPosition(number: Int) : String{
return when(number){
1 -> "First"
2 -> "Second"
3 -> "Third"
else -> "Looser"
}
}
仍在学习 Kt,我惊讶于我们需要编写的代码少得多,而且比 Java 能做的多得多。