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 語句非常相似。

廣告
© . All rights reserved.