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.
¿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: