Los switch en Java, y especialmente en Java 6, tienen una potencia muy limitada. Fuera de ciertos tipos muy cerrados, no se puede utilizar para nada más.

Pero sin embargo when puede hacer todo lo que se te ocurra hacer con un switch y mucho más.

En realidad, con la expresión when de Kotlin puedes sustituir los if/else más complejos que puedas tener en tu código

Este artículo forma parte de una serie de 30 con motivo del lanzamiento del curso presencial de Kotlin para Desarrolladores Android que impartiré en breve.

kotin-desarrolladores-android

La expresión when

Para empezar, la puedes usar como cualquier switch básico. Imagina que por ejemplo tienes una vista y quieres mostrar un toast en función de su visibilidad.

Puedes hacer:

En la expresión when, else es lo mismo que el default del switch.

Pero when tiene algunas funcionalidad extra muy potentes:

Casting automático

Si en el lado izquierdo compruebas que la clase es de un tipo, en el lado derecho ya la tendrás casteada sin necesidad de hacer nada extra:

Además de comprobar el tipo, when puede mirar por ejemplo is un elemento está dentro de un rango o de una lista, con la palabra reservada in.

when sin argumentos

Con esta opción, podemos hacer prácticamente la comprobación que queramos.

Como when es una expresión, puede retornar un valor que se puede almacenar en una variable.

Un ejemplo aplicado a Android

Los anteriores ejemplos son muy simplones y lejos de tener utilidad real.

Pero un ejemplo que me gusta mucho es el de consumir la respuesta en un onOptionsItemSelected().

La función consume es una función muy tonta que ejecuta la operación y devuelve true. La encuentro muy útil para los métodos del framework de Android que necesitan indicar si han consumido el resultado.

El código es muy simple:

Conclusión

Con la expresión when puedes hacer muy sencillo el código donde necesitas especificar el comportamiento en función de diferentes caminos, y donde los switch originales de Java se quedarían muy cortos.

Y si quieres aprender a utilizar Kotlin para desarrollar tus propias Apps Android, te recomiendo que le eches un vistazo al curso presencial. ¡Reserva tu plaza!