El operador nil coalecente en Swift

Archivada en Desarrollo Web

El operador nil coalecente en Swift

La coalecencia es la posibilidad de que dos o mas materiales se unan en un único cuerpo1. Pero en Swift la coalecencia nil es una característica que nos permite escribir código de forma más simple y seguro, pero tiene un nombre tan complicado que muchas personas mejor lo evitan.

Lo que hace la coalecencia nil es que nos permite decir ”usa el valor A si puedes, pero si A es nil entonces usa el valor B. Eso es todo. Y es verdaderamente útil cuando trabajamos con opcionales, porque hace que dejen de ser opciones porque le proporcionamos un valor por default. Entonces, si A tiene un valor lo usamos (porque tenemos un valor), pero si A vale nil, entonces usamos B (por lo que tenemos un valor). De una forma u otra vamos a tener un valor.

Por ejemplo, tenemos estos expedientes de ”Datos Presuntamente Irregulares” que tienen varias fechas posibles, por ejemplo, la entrevista, que puede o no puede ocurrir, o la fecha del acta administrativa, que solo puede ocurrir si no existe la fecha de la entrevista.

let expediente = fechaEntrevista(year: 2018) ?? "sin fecha"
print("La entrevista se realizó en \(expediente)")

Los signos de interrogación dobles forman el operador de coalecencia nil en esta situación significa que ”si fechaEntrevista() regresó un valor, se coloque en la variable expediente, pero si fechaEntrevista() regresó nil se use 'sin fecha'.”

Ahora que lo pienso, esto se parece al operador ternario que define una sentencia condicional con tres argumentos, solo que en la coalecencia nil el propio valor opcional es la condicional y su valor, si existe, es su valor cierto.2

Este concepto de opcionales es complejo, pero es muy parecido a las promesas de JavaScript, pero significativamente más fácil.


  1. Adivinaron, es una cita de la Wikipedia: https://es.wikipedia.org/wiki/Coalescencia 

  2. https://es.wikipedia.org/wiki/Operador_ternario#Python 

Javier Sanchez Toledano

Auditor Líder ISO 9000 ● Desarrollo Web Full Stack ● Django/Python ● JavaScript · NodeJS · Angular · VueJS · EmberJS ● Swift 4 ● WordPress · Genesis Framework ● Lector ● Fotografo aficionado ● Generación X ● Soy de Tlaxcala

Tlaxcala, México

Comentarios