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

Kotlin when 表达式

En este artículo, entenderás la expresión when en Kotlin a través de varios ejemplos.

¿Qué es la expresión when en Kotlin?

La expresión when en Kotlin puede considerarse}}sentencia switch de Javasustituto. Evalúa un fragmento de código entre varias alternativas.

Ejemplo: expresión when simple

fun main(args: Array<String>) {
    val a = 12
     5
    println("Ingrese operador +, -, * o /)
    val operator = readLine()
    val result = when (operator) {
        "+" -> a + b
        "-" -> a - b
        "*" -> a * b
        "/" -> a / b
        else -> "$operator operador es operador inválido.""
    }
    println("result = $result")
}

Cuando ejecute el programa, la salida será como se muestra a continuación:

operador de entrada +, -, * o /
*
result = 60

El programa anterior obtiene la entrada de cadena del usuario (recomendado leer:Obtener entrada de cadena de usuario en Kotlin)。Supongamos que el usuario ingresa*En este caso, se evaluará la expresión a * b evaluación, y el valor se asigna a la variable result.

si no se cumple ninguna condición de rama (la entrada del usuario es diferente de+o-o*o/además de otras opciones, la rama else se evaluará.

En el ejemplo anterior, usamos when como expresión. Sin embargo, cuando se usa como expresión, when no es obligatorio. Por ejemplo,

fun main(args: Array<String>) {
    val a = 12
     5
    println("Ingrese operador +, -, * o /)
    val operator = readLine()
    cuando (operator) {
        "+" -> println("$a + $b = ${a + b})
        "-" -> println("$a - $b = ${a - b})
        "*" -> println("$a * $b = ${a * b})
        "/" -> println("$a / $b = ${a / b})
        else -> println("$operator es operador inválido")
    }
}

Cuando ejecute el programa, la salida será como se muestra a continuación:

operador de entrada +, -, * o /
-
12 - 5 = 7

Aquí, when no es una expresión (no se asigna el valor devuelto por when a ningún objeto). En este caso, la rama else no es necesaria.

algunos escenarios posibles

1combinar dos o más condiciones de ramificación con comas.例如,

fun main(args: Array<String>) {
    val n = -1
    when (n) {
        1, 2, 3 -> println("n es un entero positivo menor que", 4.
        0 -> println("n es cero ")
        -1, -2 -> println("n es un entero negativo mayor que", -3.
    }
}

运行此程序时,输出为:

n es un entero negativo mayor que -3.

2verificar los valores dentro de un rango.例如,

fun main(args: Array<String>) {
    val a = 100
    cuando (a) {
        en 1..10 -> println("A es menor que",11números positivos.
        en 10..100 -> println("Entre",10y100(incluido10y10))
    }
}

运行此程序时,输出为:

números positivos entre 0) y10y100(incluido10y10números positivos entre 0) y

3verificar si un valor es de un tipo específico.

Para verificar en tiempo de ejecución si un valor es de un tipo específico, se pueden usar los operadores is y !is. Por ejemplo,

cuando (x) {
    es Int -> imprimir(x + 1)
    es String -> imprimir(x.longitud + 1)
    es IntArray -> imprimir(x.sum())
}

4使用表达式作为分支条件。例如,

fun main(args: Array<String>) {
    val a = 11
    val n = "11"
    when (n) {
        "gato" -> println("¿Gato? ¿De verdad?")
        12.toString() -> println("Justo pero no lo suficiente.")
        a.toString() -> println("Bingo! ¡Es once.")
    }
}

运行此程序时,输出为:

Bingo! ¡Es once.