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 条件

我们可以将多个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 when

Kotlin when分支可以作为用大括号括起来的代码块。

示例

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 表达式的语句都是正确的。

Q 2 - Kotlin when 可以用作表达式和语句?

A - 正确

B - 错误

答案:A

解释

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

Q 3 - Kotlin when 受以下哪个 Java 语句的启发?

A - switch 语句

B - if 语句

C - do...while 语句

C - 以上都不是

答案:A

解释

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

广告