Estructura de Control "When" en Kotlin: Uso y Ejemplos Prácticos

Clase 14 de 37Curso de Kotlin desde Cero

Resumen

¿Qué es la estructura de control when?

La estructura de control when en Kotlin puede ser una herramienta poderosa en la programación al permitir comparar una sola condición y ejecutar varios bloques de código dependiendo del resultado de esa condición. Es una alternativa más legible y organizada frente al uso de múltiples sentencias if.

¿Cómo se utiliza when en Kotlin?

Para comprender cómo funciona when, exploremos su utilización con un ejemplo concreto donde trabajamos con una variable que representa un color.

val nombreColor = "amarillo"

when (nombreColor) {
    "amarillo" -> println("El amarillo es el color de la alegría")
    "rojo" -> println("El rojo simboliza el calor")
    else -> println("Error, no tengo información del color")
}
  • Código Explicación:
    • Declara una variable nombreColor.
    • Usa when para comparar el valor de nombreColor.
    • Dependiendo del valor, se ejecuta el bloque de código asociado.
    • Utiliza else para manejar valores no contemplados en los casos anteriores.

¿Cómo comparar múltiples valores en when?

Imagina que necesitas manejar varios tonos de un color similar, como rojo y carmesí. En lugar de repetir el mismo bloque de código, when facilita la agrupación de valores.

when (nombreColor) {
    "amarillo" -> println("El amarillo es el color de la alegría")
    "rojo", "carmesí" -> println("El rojo simboliza el calor")
    else -> println("Error, no tengo información del color")
}
  • Uso de Comas: Permiten agrupar condiciones que ejecutan el mismo bloque de código.

¿Cómo funciona when con rangos de valores?

when no se limita a cadenas de texto. Puede trabajar también con enteros y rangos de valores, lo cual es extremadamente útil.

val codigo = 200

when (codigo) {
    in 200..299 -> println("Todo ha ido bien")
    in 400..500 -> println("Algo ha fallado")
    else -> println("Código desconocido, algo ha fallado")
}
  • Rangos: Utiliza in para verificar si un número está dentro de un rango. Los rangos se especifican con ...

¿Puede when asignar valores?

Como if, when puede asignar valores a variables. Aquí hay un ejemplo en relación con la disponibilidad de tallas de zapatos:

val tallaZapatos = 41
val mensaje = when (tallaZapatos) {
    41, 43 -> "Tenemos disponible"
    42, 44 -> "Casi no nos queda"
    45 -> "Lo siento, no tenemos disponible"
    else -> "Estos zapatos solo vienen en algunas tallas"
}
println(mensaje)
  • Asignación: El bloque when determina el contenido de la variable mensaje basada en el valor de tallaZapatos.
  • Exhaustividad: Para asignar, when debe cubrir todas las posibilidades, utilizando else si es necesario para otros casos no definidos.

Consejos prácticos para usar when

  • Legibilidad: when es a menudo más legible que múltiples if y es recomendable usarlo cuando una sola variable es comparada contra valores múltiples.
  • Claridad: Aumenta la claridad del código, especialmente con rangos o múltiples condiciones.
  • Mantenibilidad: Al reducir la repetición de código, se facilita el mantenimiento.

Continúa explorando y practicando para comprender cómo esta herramienta optimiza no solo el funcionamiento, sino también la claridad de tu código en Kotlin. ¡Sigue adelante, cada línea escrita es un paso más hacia el dominio de la programación!