Kotlin when 表達(dá)式

在本文中,您將通過(guò)各種示例了解在Kotlin中 when 表達(dá)式。

什么是Kotlin when 表達(dá)式

Kotlin中的when表達(dá)式可以認(rèn)為是Java switch 語(yǔ)句的代替。它評(píng)估許多代替方案中的一段代碼。

示例:簡(jiǎn)單的when表達(dá)式

fun main(args: Array<String>) {

    val a = 12
    val b = 5

    println("輸入運(yùn)算符 +, -, * 或 /")
    val operator = readLine()

    val result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> "$operator 運(yùn)算符是無(wú)效的運(yùn)算符。"
    }

    println("result = $result")
}

當(dāng)您運(yùn)行程序時(shí),輸出將如下所示:

輸入運(yùn)算符 +, -, * 或 /
*
result = 60

上面的程序從用戶那里獲取輸入字符串(推薦閱讀:在Kotlin中從用戶那里獲取字符串輸入)。假設(shè)用戶輸入*。在這種情況下,將對(duì)表達(dá)式 a * b 求值,并將值分配給變量result。

如果沒(méi)有的滿足分支條件(用戶輸入除了+,-,*,或/外,其他任何選項(xiàng),),else分支將被評(píng)估。

在上面的示例中,我們使用when作為表達(dá)式。 但是,when作為表達(dá)式使用時(shí)不是強(qiáng)制性的。 例如,

fun main(args: Array<String>) {

    val a = 12
    val b = 5

    println("輸入運(yùn)算符 +, -, * 或 /")
    val operator = readLine()

    when (operator) {
        "+" -> println("$a + $b = ${a + b}")
        "-" -> println("$a - $b = ${a - b}")
        "*" -> println("$a * $b = ${a * b}")
        "/" -> println("$a / $b = ${a / b}")
        else -> println("$operator is invalid")
    }
}

當(dāng)您運(yùn)行程序時(shí),輸出將如下所示:

輸入運(yùn)算符 +, -, * 或 /
-
12 - 5 = 7

這里, when 不是表達(dá)式(沒(méi)有將 when 的返回值賦給任何對(duì)象)。 在這種情況下,else 分支不是必需的。

幾種可能使用到的場(chǎng)景

1、用逗號(hào)組合兩個(gè)或多個(gè)分支條件。例如,

fun main(args: Array<String>) {

    val n = -1

    when (n) {
        1, 2, 3 -> println("n 是正整數(shù)小于 4.")
        0 -> println("n 為0 ")
        -1, -2 -> println("n 是負(fù)整數(shù)大于 -3.")
    }
}

運(yùn)行該程序時(shí),輸出為:

n 是負(fù)整數(shù)大于 -3.

2、檢查范圍內(nèi)的值。例如,

fun main(args: Array<String>) {

    val a = 100

    when (a) {
        in 1..10 -> println("A 是小于11的正數(shù)。")
        in 10..100 -> println("介于10和100(包括10和100)之間的正數(shù)")
    }
}

運(yùn)行該程序時(shí),輸出為:

介于10和100(包括10和100)之間的正數(shù)

3、檢查值是否為特定類型。

要在運(yùn)行時(shí)檢查值是否為特定類型,可以使用 is 和!is 運(yùn)算符。例如,

when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

4、使用表達(dá)式作為分支條件。例如,

fun main(args: Array<String>) {

    val a = 11
    val n = "11"

    when (n) {
        "cat" -> println("Cat? Really?")
        12.toString() -> println("Close but not close enough.")
        a.toString() -> println("Bingo! It's eleven.")
    }
}

運(yùn)行該程序時(shí),輸出為:

Bingo! It's eleven.
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清