English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Espressione when in Kotlin

In questo articolo, attraverso vari esempi, imparerai l'espressione when in Kotlin.

Cos'è l'espressione when in Kotlin

L'espressione when in Kotlin può essere considerata comeEspressione switch in Javadel suo sostituto. Valuta un pezzo di codice tra molte opzioni di sostituzione.

Esempio: espressione when semplice

fun main(args: Array<String>) {
    val a = 12
    val b = 5
    println("Operatore di input +, -, *, o /")
    val operator = readLine()
    val result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> "L'operatore $operator è un operatore non valido."
    }
    println("result = $result")
}

Quando esegui il programma, l'output sarà come segue:

Operatore di input +, -, *, o /
*
result = 60

Il programma sopra riceve l'input di stringa dall'utente (consigliato di leggere:Ricevere input di stringa dall'utente in KotlinImmagina che l'utente inserisca *. In questo caso, l'espressione a * b verrà valutata e il valore assegnato alla variabile result.

Se nessun ramo soddisfa la condizione di分支 (l'utente inserisce qualsiasi altra opzione oltre a +, -, *, o /), il ramo else viene valutato.

Nell'esempio sopra, abbiamo usato when come espressione. Tuttavia, when come espressione non è obbligatorio. Ad esempio,

fun main(args: Array<String>) {
    val a = 12
    val b = 5
    println("Operatore di input +, -, *, o /")
    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 è invalido")
    }
}

Quando esegui il programma, l'output sarà come segue:

Operatore di input +, -, *, o /
-
12 - 5 = 7

In questo caso, when non è un'espressione (nessun valore restituito da when assegnato a un oggetto). In questo caso, il ramo else non è obbligatorio.

Alcuni scenari possibili

1、Combinare due o più condizioni di分支 con la virgola.Ad esempio,

fun main(args: Array<String>) {
    val n = -1
    when (n) {
        1, 2, 3 -> println("n è un intero positivo minore di 4.")
        0 -> println("n è uguale a 0 ")
        -1, -2 -> println("n è un intero negativo maggiore di -3.")
    }
}

Quando si esegue questo programma, l'output è:

n è un intero negativo maggiore di -3.

2、Verificare i valori all'interno dell'intervallo.Ad esempio,

fun main(args: Array<String>) {
    val a = 100
    when (a) {
        in 1..10 -> println("A è un numero positivo minore di 11.")
        in 10..100 -> println("Un numero positivo compreso tra 10 e 100 (inclusi 10 e 100)")
    }
}

Quando si esegue questo programma, l'output è:

Un numero positivo compreso tra 10 e 100 (inclusi 10 e 100)

3、Verificare se il valore è di un tipo specifico.

Per controllare in esecuzione se un valore è di un tipo specifico, si possono usare gli operatori is e !is. Ad esempio,

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

4. Utilizzare un'espressione come condizione di ramo.Ad esempio,

fun main(args: Array<String>) {
    val a = 11
    val n = "11"
    when (n) {
        "cat" -> println("Gatto? Davvero?")
        12.toString() -> println("Quasi, ma non abbastanza.")
        a.toString() -> println("Bingo! È undici.")
    }
}

Quando si esegue questo programma, l'output è:

Bingo! È undici.