Estructura when de Kotlin para múltiples condiciones

Clase 11 de 35Curso de Kotlin

Contenido del curso

Fundamentos de Kotlin

Características Avanzadas 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.