Kotlin 简明教程

Kotlin - When Expression

考虑一下当你需要检查大量条件的情况。虽然你可以使用 if..else if 表达式来处理这种情况,但Kotlin提供了 when 表达式以更友善的方式来处理这种情况。与编写许多 if…​else if 表达式相比,使用 when 表达式更加简单和干净。如以下示例所示,Kotlin when 表达式在许多备选方案中估算一段代码。

Kotlin when 按顺序依次检查其参数与所有分支,直到满足某个分支条件。

Example

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 as Statement

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

Example

让我们再次编写上面的示例而不使用表达式形式:

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

Combine when Conditions

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

Example

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

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

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

Weekday

Range in when Conditions

Kotlin范围使用双点 .. 创建,并且我们可以使用 in 运算符在检查 when 条件时使用它们。

Example

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

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

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

Weekday

Expression in when Conditions

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

Example

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 with block of code

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

Example

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