El Tutorial Swift de hoy estará dedicado a los varios tipos de operadores con los que cuenta Swift, y aunque sé que esto es sumamente básico, no es menos importante el hecho de conocer esos matices que todo lenguaje tiene y que los diferencia. Tampoco quiero caer en algo tan aburrido como explicar el uso del operador + el cual asumo todos sepan, por este motivo es que pretendo enfocarme en el aspecto que pienso es el más importante y distintivo de Swift como lenguaje.

En pos de hacer este tutorial más completo hagamos una breve mención de los operadores con los que contamos:

Operadores Aritméticos Descripción
+ Suma dos números.
Resta dos números.
* Multiplica dos números.
/ Divide dos números.
&  El resto de una división.

…el segundo grupo sería:

Operadores de Comparación Descripción
< Evalúa si el número de la izquierda es más pequeño que el número a la derecha.
<= Evalúa si el número de la izquierda es más pequeño o igual al número a la derecha.
> Evalúa si el número de la izquierda es mayor al número a la derecha.
>= Evalúa si el número de la izquierda es mayor o igual al número a la derecha.
== Evalúa si el número de la izquierda es igual al número a la derecha.
!= Evalúa si el número de la izquierda no es igual al número a la derecha.
=== Evalúa si ambas instancias apuntan a la misma referencia.
!== Evalúa si ambas instancias no apuntan a la misma referencia.

…y el tercero:

Operadores Lógicos Descripción
&& AND Lógico: verdadero solo si ambos son verdaderos, falso en caso contrario.
|| OR Lógico: verdadero si alguno es verdadero, falso solamente si ambos son falsos.
! NOT Lógico: si es verdadero se torna en falso y viseversa.

…estos serían los operadores principales o los más comunes.

Operador ternario

Aparte de estos tenemos también el operador ternario que por alguna razón que no entiendo muchas personas lo obvian y usan if-else en sentencias tan simples como la del siguiente ejemplo, sentencia donde sin dudas el operador ternario es una opción que más que elegante parece que fue pensada para ella:

…la salida en pantalla sería:

Luego de analizar el ejemplo podemos deducir que la sintaxis de este operador ternario sería:

<expresión de control> ? < verdadero> : <falso>

…la expresión de control es aquella que evaluaremos y en dependencia del resultado pues se ejecutará el primer bloque en caso de ser verdadera la expresión y el segundo en caso de ser falsa.

Operador de desbordamiento

Este tema fue lo que motivo este tutorial, el operador de desbordamiento. Este viene a ayudarnos con las operaciones matemáticas que predeciblemente pudieran generar un overflow (desbordamiento de memoria). Sí, ya se que quizás me estarán reclamando que esto lo podemos controlar con una simple validación de datos. Bueno, ciertamente es así y de hecho quizás esta sea la razón por lo que es tan poco conocido. No obstante creo que como forma parte del lenguaje y no sabemos si en algún momento nos encontramos con situaciones donde una validación no es viable, puede que este operador nos salve el día, aquí tienen un ejemplo:

…creen que estas líneas son correctas? Pues la primera sí, pero la segunda genera un error y el motivo es el siguiente: La variable y es de tipo Int8 por lo que el compilador asume que la expresión y + 10 debe de ser Int8, esto a su vez deviene en inferir que el tipo de z es Int8 también. El problema reside en que el resultado sería 130 y el tipo de dato Int8 solamente puede almacenar valor en el rango de -128 a 127, lógicamente 130 excede el valor máximo positivo que la variable z puede aceptar.

Una posible solución sería hacer uso del operador de desbordamiento y en especifico aquel acorde a la operación matemática qe estemos efectuando, en este caso sería &+, si fuera una resta pues &-, una multiplicación &* y así. El ejemplo anterior quedaría:

…y el resultado almacenado en z sería -126 ya que el compilador de Swift al darse cuenta de que el número se pasa de 127, en este ejemplo por tres unidades, cuando el valor sobrepasa por una unidad se conmuta la suma al número negativo más pequeño y que es -128 y a partir de aquí se le siguen sumando el resto de unidades que en este punto solamente quedarían dos y -128 + 2 = -126.

De manera similar funcionaría con una resta y el operador &-, veamos el siguiente ejemplo:

…aquí el valor de z es 126 positivo, la resta ha excedido  el valor mínimo de -128 en dos unidades ya que el resultado aritmético sería -130, entonces:

-130 – (-128) = -130 + 128 = -2

…la primera de estas unidades restantes activa el overflow y para que el programa no se detenga pues el operador de desbordamiento conmuta la resta al número máximo positivo que es 127, en este punto ya solamente quedaría una unidad restante por lo que 127 – 1 = 126.

Para finalizar y a modo de aclaración, en la línea de más arriba donde expongo la sintaxis del operador ternario, la he encerrado entre <> debido a que cada uno de esos campos son mandatory (obligatorios), en caso de ser opcionales hubiera usado [], este estándar será el usado por defecto.

Para más información y ejemplos podemos dirigirnos a la documentación oficial de Swift (Inglés) en el sitio de desarrolladores de Apple.

Espero que todo cuanto se ha dicho aquí, de una forma u otra le haya servido de aprendizaje, de referencia, que haya valido su preciado tiempo.

Este artículo, al igual que el resto, será revisado con cierta frecuencia en pos de mantener un contenido de calidad y actualizado.

Cualquier sugerencia, ya sea errores a corregir, información o ejemplos a añadir será, más que bienvenida, necesaria!