Kotlin中的条件语句主要有两种:if 和 when
1. if
if语句基本和Java中的if语句没有多大的区别,比如在上篇文章 Kotlin(三) 语法糖 中,我们有个getMaxNum函数,就可以使用if语句来实现,
fun getMaxNum( a : Int , b : Int) : Int {
if ( a >=b) {
return a
}else{
return b
}
}
可以看出,Kotlin中的if和Java的if没什么区别,但是,在kotlin中,if还有一个很重要是功能,就是if语句是可以带返回值的 ,那么,上面的函数我们就可以简写成
fun getMaxNum( a : Int , b : Int) : Int {
return if ( a >=b) {
a
}else{
b
}
}
又根据我们语法糖的解释,当函数只有一行代码时,我们可以不编写函数体,那么,就可以写成
fun getMaxNum( a : Int , b : Int) = if ( a >=b) {
a
}else{
b
}
当然,这样简写还是很占地方,那么我们还可以继续简写,就变成了
fun getMaxNum( a : Int , b : Int) = if ( a >=b) a else b
2.when
Kotlin中when条件语句和Java中的switch语句有点像,但是比switch语句要强大很多,因为java的switch语句有很多限制,导致使用起来很不方便,但是在kotlin中的when语句却没有这种烦恼
当我们想要查询一场考试成绩中某些同学的成绩时:
fun getScore ( name : String) = if ( name ="Tom") {
88
} else if ( name = "Jack" ) {
90
} else if ( name= "Yong" ) {
66
} else {
60
}
这里定义了一个getScore()函数,这个函数接收一个学生姓名参数,然后通过if判断找到该学生对应的考试分数并返回。可以看到,这里再次使用了单行代码函数的语法糖,正如我所说,它真的很常用。虽然上述代码确实可以实现我们想要的功能,但是写了这么多的if和else,你有没有觉得代码很冗余?没错,当你的判断条件非常多的时候,就是应该考虑使用when语句的时候,现在我们将代码改成如下写法:
fun getScore ( name :String ) = when (name) {
"Tom" -> 88
"Jack" -> 90
"Yong" -> 66
else -> 60
}
when语句允许传入一个任意类型的参数,然后可以在when的结构体中定义一系列的条件,格式是:匹配值 -> { 执行逻辑 }
当你的执行逻辑只有一行代码时,{ }可以省略。这样再来看上述代码就很好理解了吧?除了精确匹配之外,when语句还允许进行类型匹配。什么是类型匹配呢?这里我再举个例子。定义一个checkNumber()函数,如下所示:
fun checkNum( num : Number ) {
when (num) {
is Int -> println ( "num is Int" )
is Long-> println ( "num is Long" )
is Double-> println ( "num is Double" )
else -> println ( "num not support" )
}
}
通过这一篇文章的学习,相信你也发现了,Kotlin中的when语句相比于Java中的switch语句要灵活很多,希望你能多写多练,并熟练掌握它的用法。