Home » Reseñas » Guard y los nuevos controles de flujo en Swift 2
Guard-Control-Flow-Swift2

Guard y los nuevos controles de flujo en Swift 2

Seguimos cubriendo la WWDC 2015 cargada de importantes novedades. Por si no lo habéis notado, este año la exclusividad de las cuentas de pago para el contenido es mucho más limitado y cualquiera, sin siquiera estar registrado, puede descargar el nuevo Xcode 7 y ver los vídeos de la WWDC o acceder al streaming de las sesiones.

Ya hicimos un análisis de los cambios de Swift 2 pero seguimos aprendiendo cosas que creemos interesantes para ir publicando y contarlas a todos vosotros. Una de estas son los nuevos flujos que podemos usar en Swift 2, como la nueva instrucción guard, un añadido a Swift 2 con el objetivo de crear código que tenga una mayor seguridad ante posibles fallos.

Guard, el anti-if

El concepto de guard es muy sencillo: es una salida segura temprana de un proceso cuando no se cumplen las condiciones para ejecutarlo.

Guard es capaz de hacer un enlace opcional que compruebe si el valor es válido o es nil, y permitir el uso de ese enlace fuera del contexto del mismo guard.

Vamos a suponer que tenemos una función que quiere recuperar un sprite por su nombre, sabiendo que la función que vamos a usar nos devuelve un opcional porque el nombre que vamos a indicar puede existir o no.

Esa es la esencia: cuando hacemos el enlace opcional, este queda expuesto y enlazado (en caso que no sea nulo) al contexto general de la función y no solo al if, como sucedía con los enlaces opcionales. Por lo tanto nos permite ejecutar una acción que si no se cumplen las condiciones nos permite salir de la función y detener la ejecución y cualquier otro tipo de proceso más que fuera innecesario y consumiera recursos y tiempo.

Guard, podríamos considerarlo como un “anti-if”, en cierto modo, pero de forma que tiene integrada la seguridad que protege contra errores provocados por las variables, entrando en la condición del else (que siempre ha de estar presente) cuando haya cualquier error al respecto. Además, permite una cláusula where donde también podamos validar una condición de una variable si el enlace ha resultado correcto.

Y lo más importante, nos permite usar el enlace opcional fuera del contexto de guard, con lo que podemos organizar mejor el código y no tener que meterlo todo dentro del if – let para estar en el ámbito donde se crea el enlace al opcional.

Case en los if

El switch es una de las instrucciones más prácticas que hay en Swift, y uniendo su función con las enumeraciones o enlazando opcionales, podemos conseguir un código muy potente y sencillo.

Ahora en Swift 2 también podemos usar los case que pertenecen a un switch directamente en el contexto de un if, incluyendo cláusulas where o extrayendo valores asociados en una enumeración, si queremos.

Hasta ahora si solamente validábamos un caso en el switch, podía ser un poco engorroso como vemos en el ejemplo de más arriba. Pero ahora podemos hacer un if directo de esta sentencia case y que funcione sin problema, obviando tener que usar el switch.

Simplemente igualamos el case a la variable con la que haríamos el switch y ya lo tenemos resuelto.

Iteraciones for in condicionales

Otro gran problema muy habitual es cuando queremos recorrer un array pero no queremos tener en cuenta valores del mismo que coincidan con un criterio determinado.

La forma de resolverlo es como vemos en el código más arriba: cogemos un array de cadenas y verificamos antes si cada cadena de la iteración es vacía, para no imprimir en pantalla los casos en que no haya nada. Pero ahora podemos condicionar esto dentro del propio for.

Incluso podemos utilizar el for in para hacer una iteración sobre un array de enumeraciones con valores asociados, en los que capturemos el valor asociado dentro de la misma llamada.

Sin duda, son incorporaciones muy interesantes al lenguaje que nos harán la vida más práctica y que mejoran los flujos de trabajo actuales proporcionando nuevas e interesantes opciones.

Y recordad, ahora que podéis bajar Xcode 7 gratuito y que podéis usar vuestro dispositivo sin restricción alguna para probar insitu las apps, ya no tenéis excusa. Practicad y Good Apple Coding.

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

SwifterSwift, la colección de extensiones definitiva para Swift 3

SwifterSwift es la colección de extensiones número 1 de GitHub que ha convertido a su creador en una estrella del desarrollo. Conoce sus funciones y la historia de su creador quien se re-inventó huyendo de la guerra en menos de 2 años convirtiéndose en un experto en Swift y otros muchos lenguajes y sistemas. Un ejemplo de superación personal y una librería (resultado de su excelente trabajo) de gran calidad para nuestro trabajo del día a día.