English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este artículo, entenderás la expresión when en Kotlin a través de varios ejemplos.
La expresión when en Kotlin puede considerarse}}sentencia switch de Javasustituto. Evalúa un fragmento de código entre varias alternativas.
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.
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()) }
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.