Kotlin笔记4--when条件语句

时间:2025-03-19 08:14:30

Kotlin 的 when 类似于 Java 的 switch 。

用 if 写的话,是这样的,

fun getStudentScore(name: String) = if (name == "James") {
    98
} else if (name == "Wade") {
    97
} else if (name == "Harden") {
    96
} else {
    60
}

Kotlin 中判断字符是否相等可以直接用 ==

当判断条件比较多时,适合用 when ,上述例子在 AS 里也会报黄,提示用 when 。

精确匹配

精确匹配就是精确的匹配。(这不废话嘛 →_→ ,上 code)

上述例子用 when 写,就简洁了。

when 语句带参数的写法,

fun getStudentScore(name: String) = when (name) {
    "Curry" -> 98
    "Wade" -> 97
    "Harden","Tom" -> 96
    else -> 0
}

when 语句不带参数的写法,适用于还需要对参数进一步判断的场景。

fun getStudentScore2(name: String) = when {
    ("Jordan") -> 100
    name == "Curry" -> 98
    name == "Wade" -> 97
    name == "Harden" -> 96
    name == "Tom" -> 96
    else -> 0
}

两种写法都可以,按照实际情况选择就好。

除了精确匹配, when 还可以类型匹配。

类型匹配

顾名思义,就是判断参数是什么类型的。

示例,

fun checkNum (num : Number) = when (num){
    is Int -> println("num is Int")
    is Double -> println("num is Double")
    is Byte -> println("num is Byte")
    else -> println("num not known")
}

其中, Number 是 Kotlin 内置的抽象类,Int 、Long 、Float 、Double 等和数字相关的类都是它的子类。

还可以换个写法。

fun checkNum1 (num : Number)  {
    when (num){
        is Int -> println("num is Int")
        is Double -> println("num is Double")
        is Byte -> println("num is Byte")
        else -> println("num not known")
    }
}