您现在的位置是:首页 >技术教程 >Kotlin学习 - 选择控制if 和when网站首页技术教程
Kotlin学习 - 选择控制if 和when
简介Kotlin学习 - 选择控制if 和when
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")
}
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。