Swift – Variables y Constantes

Comenzamos nuestra serie de tutoriales Swift aprendiendo sobre qué es una variables y una constante, que es la inferencia de tipos, y una inevitable introducción a los tipos de datos.

¿Qué es una variable o una constante?

Una variable al igual que una constante son segmentos de memoria, son áreas en la memoria RAM de nuestro ordenador o dispositivo mobile, en las cuales podemos almacenar información.

Valores que en el caso de las variables podemos modificar y que en el caso de las constantes no. Un ejemplo bien simple de esto sería lo siquiente:

  • Caso Variable – Una aplicación donde gestionamos una ficha de clientes, y en la cual contamos con un campo donde registramos las compras que ha efectuado, este campo tiene que se variable para que el valor pueda ser modificado cada vez que el cliente efectúa una compra.
  • Caso Constantes – En la aplicación anterios también contamos con un registro de nuestros trabajadores, sus nombres, fecha de nacimiento y resto de datos. La fecha de nacimiento de una persona es un dato constante, y por ende no tiene sentido almacenarla en una variable así que abogariamos por una constante.

Mucha de la información que gestionamos en nuestras aplicaciones son variables o constantes: los clientes que atiende un UBER por día son un dato variables, mientras que la cantidad de puertas de dicho automóvil es un dato constante. Creo que ha quedado claro, pero aún hay matices que conocer.

Variables

Una variable no es más que un segmento de memoria en el cual podemos almacenar valores, los cuales podrán cambiar durante la ejecución de cierto bloque de código, de ahí que se llamen variables. Un espacio asignado en la memoria RAM de nuestro dispositivo.

Veamos la memoria RAM como una mesa, de un tamaño determinado y en cuya superficie podemos colocar objetos, o variables en este caso. Cuando sobre una mesa tenemos varios objetos y necesitamos colocar uno o varios más, ¿qué hacemos? exacto, buscamos un área vacia y ahí lo colocamos, siempre y cuando el espacio disponible sea lo suficientemente grande para que el objeto quepa.

De manera similar ocurre con la RAM, el sistema operativo lleva un control sobre el uso de la memoria y asigna las áreas libres basado en varios factores, entre ellos el tamaño de la variable.

Ahora, veamos una variable como un objeto reutilizable sobre la mesa, digamos que un plato y como todo plato la comida que podemos servir en él es variable, tanto en cantidad como en variedad, siempre y cuando no se salga del plato.

Con las variable podemos hacer lo mismo, una vez que le asignamos un valor, que sería el equivalente a la comida, podemos modificarlo tanto como sea necesario. Podemos por ejemplo declarar una variable de tipo numérico y asignarle el valor de 1 y luego asignarle nuevamente otro valor, digase: 6, 8, 20 y cualquier otro número.

Cuando digo tipo numérico me refiero al tipo de dato que almacenará la variable. Valor que asociábamos con la comida, y que al igual que esta pueden haber de distintos tipos. Podemos tener un valor numérico (5), de coma flotante (2.5), caracteres (a) o cadenas de caracteres (hola).

¿De qué nos sirve tener en cuenta los tipos de datos?

Pues cuando vamos a comer, en dependencia de la comida escojemos el plato, no usamos el mismo plato o los mismos cubiertos cuando vamos a comer arroz, papas fritas, frijoles o sopa. Para algunas de esta comidas nos vale un plato llano, mientras que para otras un plato hondo y una cuchara sería lo más apropiado, por razones más que evidentes.

De manera muy similar sucede en las ciencias informáticas, cuando le informamos al compilador que necesitamos declarar una variable que almacenará cierto tipo de dato: ayudamos a la optimización de nuestro código y a la asignación de memoria

Declaración de una variable

La declaración de una variable es bien sencilla e intuitiva. En Xcode creamos un nuevo Playground y en el template por defecto nos saldrá lo siguiente:

import UIKit

var str = "Hello, playground"

En la primera línea importamos la librería UIKit, digamos que esto sería como traernos a nuestro trabajo una caja de herramientas para usar mientras construimos nuestra aplicación. En próximos artículos explicaremos más sobre esto, lo abordo ligeramente para que no se queden con una duda total.

La última línea es la que nos importa, en esta declaramos una variable de nombre str (string) a la cual le asignamos una cadena de caracteres «Hello, playground» como valor asociado.

Pero ¿cómo sabe el compilador que estamos declarando una variable? Pues gracias a la sintaxis que hemos usado:

var nombre = valor

var es la palabra clave donde explícitamente declaramos nuestra intención de definir una variable, nombre pues sería el nombre asociado a la variable, el símbolo de = seguido de valor es como asociamos a una variable o una constante su valor asociado. Otro ejemplo:

var edad = 30

Constantes

Las constantes son muy similares a las variables, la diferencia principal reside en la manera como tratamos los valores que almacenamos en estos segmentos de memoria.

En nuestro ejemplo de la mesa y los platos, una constante sería un salero sobre la mesa (la memoria RAM), cuyo contenido siempre es constante, un salero siempre contiene sal, y su contenido no cambia durante toda la ejecución de aplicación, o mejor dicho, no cambia durante toda la cena.

Retomando un enfoque más técnico, digamos (por ahora) que las constantes tenemos que inicializarlas con un valor una vez que la declaramos, momento despues del cual no podremos modificar dicho dato.

Serían como variables de solo lectura, o mejor dicho son segmentos de memoria de solo lectura cuyo tamaño no podrá redimencionarse.

Declaración de una constante

Estas constantes se declaran con la palabra clave let

let name = "Archimedes of Syracuse"

let edad  = 30

La primera constante que hemos declarado ha sido inicializada con un valor de tipo String, en este caso un nombre y la segunda con un número haciendo referencia a una edad. También aplica a las constantes la inferencia de tipo como podemos observar en la constante name, que en este caso es de tipo String.

Ahora, los nombres no cambian pero la edad sí, por este motivo lo más lógico es que edad continue siendo una variable y con esto lo que busco es que se entienda que hay datos que siempre son los mismos, como la cantidad de pisos del tú edificio, el número PI, la constante Euler, el número de ruedas de un carro, el número de patas de tu perro o gato… etc.

Otros datos están dados a cambiar dada su naturaleza, como la edad, el año en que estamos, la cantidad de ciudadanos de un país, el costo de un producto… y así vemos como desde la programación necesitamos una manera de representar esta mutabilidad de los datos.

Dicho lo anterior creo que es mejor asociar a Archimedes con el número PI que con una edad de 30 años:

let name = "Archimedes of Syracuse"

// let edad = 30

let piNumber = Double.pi

Como el bueno de Archimedes lleva años muerto dudo que se cambie el nombre y aún cuando el número PI puede ser modificado si se calculan más decimales, la API de Swift se actualizará y el código que hemos declarado seguirá siendo válido.

Esta última es la razón por la cual usamos Double.pi en lugar de un valor literal especificado por nosotros y que luego sí tendríamos que modificar en caso de necesitar más precisión. Double.pi es una constante declarada dentro del propio lenguaje Swift.

Cuando declaramos una constante le informamos al compilador de que ese segmento de memoria una vez inicializado ya no se modificará su valor y esto permite al compilador optimizar el código basado en esta característica.

Nombre de Variables y Constantes

Los nombres de las variables y constantes pueden contener prácticamente cualquier carácter, incluyendo caracteres Unicode.

Veamos algunos ejemplos válidos:

let π = Double.pi

let 你好 = "你好世界"

var number7 = "Número al final del nombre."
var number4IsEven = "Número en el medio del nombre."

let 🐶🐮 = "Dog and Cow"

Ahora bien, y según como indica la propia documentación los nombres ya sea de una constante o variable no pueden jamás contener caracteres de espacio en blanco, símbolos matemáticos, flechas, valores Unicode escalares de uso privado o bien caracteres de línea o caja.

Tampoco pueden comenzar con un número, aunque los números pueden incluirse en otros lugares dentro del nombre, dígase al medio o al final tal y como vemos en el anterior ejemplo.

Algo que creo bastante evidente y que básicamente es así en prácticamente todo los lenguajes de programación es lo siguiente:

Una vez que hayamos declarado una constante o variable de un cierto tipo, no podemos declararlo de nuevo con el mismo nombre, o cambiar el tipo de dato para almacenar valores de un tipo diferente.

Tampoco podemos convertir una constante en variable y viceversa.

Conclusiones

Como podemos constatar Swift es un lenguaje con una sintaxis muy sencilla y limpia, se trabaja de una manera muy fluida, y a los que hemos trabajado con Objetive-C nos resulta un alivio más bienvenido.

En mi caso que he trabajado con C y C++ la sintaxis que Objetive-C me resultaba la peor de todas, muy enrevesada por gusto y quizás por eso valoro tanto la objetividad y el pragmatismo de Swift.

Falta aún mucho por aprender en nuestro camino a convertirnos en iOS Developer. Suscríbete a nuestra lista de correo y síguenos en nuestras redes sociales. Mantente al tanto de todas nuestras publicaciones.

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 duda o sugerencia, ya sea errores a corregir o ejemplos a añadir, será más que bienvenida, necesaria!

Deja una respuesta

Su dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que está de acuerdo con esto, pero puede optar por no participar si lo desea. Aceptar Leer Más

RECIBE CONTENIDO SIMILAR EN TU CORREO

RECIBE CONTENIDO SIMILAR EN TU CORREO

Suscríbete a nuestra lista de correo y mantente actualizado con las nuevas publicaciones.

Se ha suscrito correctamente!