Estructura when de Kotlin para múltiples condiciones
Clase 11 de 35 • Curso de Kotlin
Resumen
La sentencia when en Kotlin ofrece una manera eficiente y fácilmente legible de gestionar múltiples condiciones en tus programas. Para estructuras con más de dos condiciones, utilizar when en lugar de if-else anidados mejora la claridad del código y facilita su mantenimiento.
¿Qué es y cómo funciona la sentencia when en Kotlin?
La estructura when
permite evaluar diferentes casos y ejecutar acciones según corresponda. Cada caso se evalúa en el orden establecido, asociando una condición con la acción a realizar mediante una flecha ->
. Al igual que otras estructuras de control, soporta la ejecución múltiple con llaves {}
si hay varias acciones implicadas.
Por ejemplo, al evaluar correos de usuarios:
- Si contiene "admin", lo clasifica como administrador.
- Si contiene "support", lo clasifica como soporte.
- En otros casos, lo clasifica como usuario normal.
when {
email.contains("admin") -> println("administrador")
email.contains("support") -> println("soporte")
else -> println("usuario normal")
}
¿En qué situaciones conviene utilizar la sentencia when?
Se recomienda emplear when
especialmente en estos casos:
- Al manejar más de tres condiciones claramente diferenciadas.
- Cuando cada condición lleva asociada una secuencia de comandos específicos.
La estructura queda mucho más organizada que múltiples if-else
, facilitando su comprensión y modificaciones posteriores.
¿Cómo asignar valores con la estructura when?
Al igual que la estructura if-else
, la estructura when
permite asignar directamente valores según una condición. La última instrucción ejecutada dentro del bloque del when
determina el valor retornado hacia una variable.
val tipoUsuario = when {
email.contains("admin") -> "administrador"
email.contains("support") -> "soporte"
else -> "usuario normal"
}
En el ejemplo anterior, Kotlin infiere automáticamente que el tipo de dato asignado es String.
¿Qué ocurre al pasar argumentos en el when?
Al pasar una variable o argumento al when
, se evalúa sobre la base del valor especificado, comparando lo recibido con diferentes casos enumerados:
val proveedor = readLine()
when (proveedor) {
"Gmail" -> println("Google Mail")
"Yahoo" -> println("Yahoo Mail")
"Outlook" -> println("Microsoft Outlook")
else -> println("Otro proveedor")
}
Esto simplifica comparaciones y visualización específica a valores puntuales.
¿Cómo agrupar condiciones en when?
Kotlin permite agrupar varias condiciones en un mismo caso del when
usando operadores lógicos:
val resultado = when {
email.contains("@") && email.contains(".com") && email.contains("Gmail") -> "correo válido del proveedor Gmail"
email.contains("@") && email.contains(".com") -> "correo válido"
else -> "correo no válido"
}
Ejercicio práctico: evaluar la fortaleza de una contraseña
Para reforzar lo aprendido, practica evaluando contraseñas según su longitud usando when
. Clasifica como:
- "Fuerte", si es mayor o igual a 8 caracteres.
- "Media", si es mayor o igual a 6 caracteres.
- "Débil", en todos los demás casos.
fun evaluarPassword(password: String): String =
when {
password.length >= 8 -> "fuerte"
password.length >= 6 -> "media"
else -> "débil"
}
Recuerda probar esta función ejecutando tu programa y proporcionando diferentes longitudes de contraseña.