Estructura when de Kotlin para múltiples condiciones
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.
¿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:
Usa when en Kotlin como una alternativa más limpia y versátil a las cadenas if-else if. Evalúa un argumento contra varias ramas para ejecutar código específico.
When esta bien pesando y sobre todo es facil de poder interpretarlo, se siente que al programarlo es mas natural.
When haces tus momos en kotlin?
esta sintasis de switch case con when tiene una mejor azucar sintactica
Lo hice de esta manera:
fun evaluarPassword(password:String){ val passwordLongitud = password.length when{ passwordLongitud>=8->println("Fuerte") passwordLongitud>=6->println("Media")else->println("Débil")}}
Me parece que when es una excelente opción para manejar el renderizado de componentes basado en diferentes estados (como Loading, Success, Error) para determinar qué mostrar en la UI.