Kotlin - 条件语句 if else、when

本文介绍了Kotlin中`ifelse`表达式和`when`表达式的使用,强调它们在简化代码和替代Java中的三元运算符及switch语句上的应用。`ifelse`可以作为表达式直接返回值,而`when`则提供了更灵活的条件匹配,能处理多种情况并替代`if-else`链。同时,`when`表达式还可以没有参数,仅根据条件执行相应的代码块。

一、if

作为表达式使用会返回一个值,因此不需要再用Java中的三元运算符了

val a = 1
val b = 2
 
//通常用法
if (a < b)
    max = a
else{
    max = b
    print("max赋值了b")
}
 
//作为表达式,取代三元运算符
max = if (a < b) a else b
 
//赋值给变量,需要有else,赋值的语句要放在最后一行
max = if (a < b){
    a
}else{
    print("...")
    b    //赋值放在最后一行
}

二、when

用来替代 Java中 的 switch,只要代码中包含 else if 分支都建议换成 when 表达式,需要将判断条件的情况全部列举出来。

//通常用法
when (max) {
    1,3,5,7,9 -> print("max是单数")    //执行结果一样,多个条件可以写在一起
    !in 100..999 -> print("max不是三位数")    //可以检测一个值在或者不在一个区间或者集合中
    Integer.parseInt("100") ->{    //可以用任意表达式(而不只是常量)作为分支条件
        print("max的值是100")
    }
}
 
//作为表达式需要有else(相当于default),可以是代码块,要放到最后一行
val max = 2
val num = when (max){
    1 -> 1
    2 -> {
        println("...")
    }
}
print(num)    //打印2
 
fun num2Chinese(num:Int): String{
    return when (num){
        1 -> "壹"
        2 -> "贰"
        3 -> "叁"
        else -> "无对应文字"
    }
}
 
//可以用来取代 if ,else if链,如果不提供参数,当一个分支的条件为 ture 时则执行该分支
when {
    max == 1 -> print("max值为1")
    num != 2 -> peint("num值不为2")
    else -> print("都不满足")
}

2.1 守卫条件(Guards)

自 v2.1 开始。之前需要在 when 分支里再写 if,现在可以直接写在分支上。

sealed interface Result
data class Success(val value: Int) : Result
data class Failed(val msg: String) : Result

fun handle(result: Result) = when (result) {
    //可以在分支的条件上直接使用if
    is Success if result.value > 100 -> {}
    //以前要写在分支里
    is Success -> {
        if (result.value < 100) {} else {}
    }
    is Failed -> {}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值