Estructura when de Kotlin para múltiples condiciones

Clase 11 de 35Curso 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.