Kotlin中的选择控制有两种方式:if和when
if选择语句
Kotlin的if语句和Java中的类似:
fun max(a: Int, b: Int): Int {
return if (a > b) a else b
}
只有一行语句可以省略大括号,返回类型可自动推导出来,所以最后可以写成
fun max(a: Int, b: Int) = if (a > b) a else b
多条语句分支,Kotlin的if语句必须要有else,因为Kotlin编译器会强制检查默认选项 ,不然会报错。
fun getScore(name: String) = if (name == "Tom") "不及格"
else if (name == "Jim") "及格"
else if (name == "Pony") "良好"
else if (name == "Tony") "优秀"
else "名字非法"
Kotlin中 == 等价的是Java中equals比较的是对象中的内容, ===等价Java中==,比较的是对象的地址。
when选择语句
修改上面的例子,如果 when 作为一个表达式使用,则必须有 else 分支, 因为Kotlin编译器会强制检查默认选项 ,除非编译器能够检测出所有的可能情况都已经覆盖了。
fun getScore(name: String) = when(name) {
"Tom" -> "不及格"
"Jim" -> "及格"
"Pony" -> "良好"
"Tony" -> "优秀"
else -> "名字非法"
}
when中参数可以省略,判断改成布尔类型:
fun getScore(name: String) = when {
name == "Tom" -> "不及格"
name == "Jim" -> "及格"
name == "Pony" -> "良好"
name == "Tony" -> "优秀"
else -> "名字非法"
}
-> 后还可以有多行语句:
fun getScore(name: String) = when {
//若name以Tom开头则命中此分支
name.startsWith("Tom") -> {
//处理
println("你好,我是Tom开头的同学")
"不及格"
}
name == "Jim" -> "及格"
name == "Pony" -> "良好"
name == "Tony" -> "优秀"
else -> "名字非法"
}
分支条件可以是:Int对象,区间,方法,字符串,对象等
when (x) {
0, 1 -> print("x == 0 or x == 1")
in 2 -> print("x == 2")
in 3..8 -> print("x == 3..8")
parseInt(s)-> print("parseInt")
is String -> print("x is String")
else -> print("otherwise")
}
本文介绍了Kotlin编程语言中的选择控制结构,包括if语句和when表达式的使用。if语句支持单行和多行形式,必须包含else分支以确保所有情况都被处理。when表达式提供了更灵活的匹配选项,如字符串、布尔值、区间等,并且在作为表达式使用时也需要else分支。
490

被折叠的 条评论
为什么被折叠?



