Kotlin - When 表达式


考虑一下当您有大量条件需要检查时的情况。虽然您可以使用if..else if表达式来处理这种情况,但 Kotlin 提供了when表达式来以更好的方式处理这种情况。与编写许多if...else if表达式相比,使用when表达式要简单得多且更加简洁。Kotlin when表达式在许多替代方案中评估一段代码,如下例所示。

Kotlin when 会按顺序将其参数与所有分支进行匹配,直到满足某个分支条件。

Kotlin when表达式类似于C、C++ 和 Java 中的switch语句。

例子

fun main(args: Array<String>) {
   val day = 2

   val result = when (day) {
     1 -> "Monday"
     2 -> "Tuesday"
     3 -> "Wednesday"
     4 -> "Thursday"
     5 -> "Friday"
     6 -> "Saturday"
     7 -> "Sunday"
     else -> "Invalid day."
   }
   println(result)
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Tuesday

Kotlin when 作为声明

Kotlin when既可以用作表达式,也可以用作语句,就像 Java 中的 switch 语句一样。如果将其用作表达式,则第一个匹配分支的值将成为整个表达式的值。

例子

让我们不使用表达式形式再写一次上面的例子:

fun main(args: Array<String>) {
   val day = 2

   when (day) {
     1 -> println("Monday")
     2 -> println("Tuesday")
     3 -> println("Wednesday")
     4 -> println("Thursday")
     5 -> println("Friday")
     6 -> println("Saturday")
     7 -> println("Sunday")
     else -> println("Invalid day.")
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Tuesday

结合条件

我们可以将多个when条件组合成一个条件。

例子

fun main(args: Array<String>) {
   val day = 2

   when (day) {
     1, 2, 3, 4, 5 -> println("Weekday")
     else -> println("Weekend")
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Weekday

When 条件范围

Kotlin 范围是使用双点创建的..我们可以在in运算符的帮助下检查when条件时使用它们。

例子

fun main(args: Array<String>) {
   val day = 2

   when (day) {
     in 1..5 -> println("Weekday")
     else -> println("Weekend")
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Weekday

when 条件中的表达式

Kotlin when可以使用任意表达式而不是常量作为分支条件。

例子

fun main(args: Array<String>) {
   val x = 20
   val y = 10
   val z = 10
   
   when (x) {
      (y+z) -> print("y + z = x = $x")
      else -> print("Condition is not satisfied")
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

y + z = x = 20

Kotlin 与代码块的关系

Kotlin中,分支可以作为包含在大括号内的代码块放置。

例子

fun main(args: Array<String>) {
   val day = 2

   when (day) {
     1 -> {
        println("First day of the week")
        println("Monday")
     }
     2 -> {
        println("Second day of the week")
        println("Tuesday")
     }
     3 -> {
        println("Third day of the week")
        println("Wednesday")
     }
     4 -> println("Thursday")
     5 -> println("Friday")
     6 -> println("Saturday")
     7 -> println("Sunday")
     else -> println("Invalid day.")
   }
}

当你运行上面的 Kotlin 程序时,它将生成以下输出:

Second day of the week
Tuesday

测验时间(面试和考试准备)

答案:D

解释

所有提到的关于 Kotlin when 表达式的陈述都是正确的。

问题 2 - Kotlin 什么时候可以用作表达式以及语句?

A - 正确

B - 错误

答案:A

解释

是的,Kotlin when 确实可以用作表达式和语句。

问题 3 - Kotlin 何时受到以下哪条 Java 语句的启发

A - switch 语句

B - if 语句

C - do...while 语句

C - 以上都不是

答案:A

解释

Kotlin 的语法和功能与 Java 中的 switch 语句非常相似。