Home » Noticias » Xcode 6 Beta 5 y nuevos cambios en Swift: opcionales
Xcode 6 Beta 5

Xcode 6 Beta 5 y nuevos cambios en Swift: opcionales

Parece claro que iOS 8, OS X Yosemite y el nuevo Xcode 6 siguen un ciclo novedoso hasta ahora, dada la gran implicación a nivel de desarrollo de estos sistemas y entornos. Cada 2 semanas, como un reloj, Apple presenta una nueva versión donde no solo hace pequeños cambios, correcciones de errores, incorporaciones y demás, sino que va puliendo el nuevo lenguaje de programación Swift.

Y siguiendo nuestra línea editorial, vamos a repasar los cambios del lenguaje para que podáis ir adaptando vuestro actual código con las garantías que seguirá funcionando.

Opcionales

Hasta ahora, cuando evaluábamos una variable opcional, esta devolvía true si tenía un valor y false si no lo tenía. Esta era la forma más habitual de trabajar pero en el caso de evaluar variables de tipo Boolean era bastante confuso, ya que estas se evaluaban por su valor y no por la existencia del mismo.

Ahora, la evaluación implícita ha desaparecido, por lo que ya no podremos preguntar por la variable opcional tal cual, sino que tendremos que indicar si es o no igual a nil, con lo que se consigue que el uso de los **Boolean* ahora sea coherente al resto del lenguaje.

Antes:

Ahora:

También hemos de notar que cuando preguntamos si la variable opcional tiene o no valor, hay que preguntar por la variable directamente, mientras que si preguntamos por su valor habrá que usar el unwrap con el símbolo !. De esta forma, es mucho más coherente todo el funcionamiento de las opcionales, sobre todo cuando tiene que ver con el uso de tipos Boolean que sean de este tipo de variables.

Además, Swift incorpora ahora un operador de coalescencia en nil. ¿Qué es esto? Pues es la posibilidad de preguntar por la existencia o no de un valor válido dentro de una variable opcional y en caso que no tenga, devolvería un valor por defecto indicado en dicho operador. c = a ?? b asignará b a la variable c si la variable opcional a no tiene aun valor (o sea, es nil). Podemos verlo en el siguiente ejemplo obtenido de la propia Apple.

Otro cambio es que las variables unwrap con el modificador !, pueden ser asignadas directamente a un valor, permitiendo igualmente la mutabilidad de diccionarios anidados. Además, el operador de encadenamiento ? puede usarse para asignar un valor a una variable opcional en caso que esta pudiera tener valor.

Otros pequeños cambios

Como podéis ver, el cambio más importante es en las opcionales, pero aparte de esto os detallamos algunos otros cambios que se han implementado:

  • Ahora los rangos evalúan los valores máximo y mínimo para que estos se establezcan coherentemente. Si en un rango a…b, la progresión de a nunca podría llegar a b, no se da por válido en tiempo de compilación.
  • ReverseRange ha sido eliminado, siendo sustituido por la función .reverse() del propio rango.
  • Se han renombrado varios protocolos usando los sufijos able, ible o Type. Además el protocolo LogicValue ha cambiado por BooleanType y el método getLogicValue() ha sido sustituido por la propiedad boolValue.
  • Los tipos UnsafeConstPointer y UnsafePointer ahora se llaman UnsafePointer y UnsafeMutablePointer para tener más coherencia con Cocoa. Los tipos UnsafeArray y UnsafeMutableArray ahora son UnsafeBufferPointer y UnsafeMutableBufferPointer.
  • Los arrays ahora incluyen las propiedades first y last para devolver el elemento correspondiente o nil según el caso.
  • El atributo @auto_closure ahora es @autoclosure. Los atributos @prefix y @postfix ahora son modificadores para la declaración sin la @, solamente prefix y postfix. El atributo @class_protocol ha sido eliminado.
  • El compilador de Swift ahora se llama swiftc y el modo de compilación de código rápido (donde se deshabilitan una serie de características seguras del compilador) ha cambiado de -Ofast a -Ounchecked. Aunque el primero sigue funcionando por compatibilidad, en futuras betas desaparecerá.

Por último, aunque no menos importante, las instrucciones print() y println() ahora darán el mensaje directamente en la barra lateral del PlayGround, y no necesitaremos acudir a la venta de terminal para saber lo que muestran.

Si tenéis cualquier duda, ya sabéis dónde acudir a través de nuestro formulario de contacto o en el foro de discusión. Seguiremos informando de posteriores versiones y hasta entonces, 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

Files Banner

¡BOOM! Se filtra el gestor oficial de archivos de Apple: Files

A solo una horas de comenzar la WWDC, se filtra en el App Store durante unos minutos la app Files, gestor oficial de archivos para iOS 11. Analizamos cómo podría iOS 11 incorporar la gestión de archivos, que el hecho de cómo y dónde está publicada nos da mucha información de lo que Apple piensa hacer con este demandado servicio para sus dispositivos iOS.