Kotlin(四) 条件语句

本文介绍了Kotlin中的条件语句,包括if和when。if语句在Kotlin中不仅可以作为控制流,还能直接返回值。而when语句则比Java的switch更强大,支持多种匹配方式,如精确匹配和类型匹配。通过实例展示了如何使用when简化代码,提高代码的可读性和简洁性。
摘要由CSDN通过智能技术生成

Kotlin中的条件语句主要有两种:ifwhen
 

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语句要灵活很多,希望你能多写多练,并熟练掌握它的用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值