Swift logotipo

Variables

Para poder empezar a entender y trabajar con constantes y variables, picaremos código en el «Playground de Swift». Eso sí, esta vez en el Xcode.

Creación de un nuevo Playground en Swift

Luego, lo bautizamos con un nombre y ya podremos continuar con este post.

La declaración de Constantes, Variables y tipos

En Swift, usamos la palabra clave “var” para declarar una variable. Si bien esto es similar a cómo se declaran las variables en otros lenguajes de programación, le aconsejo encarecidamente que no piense en otros lenguajes de programación cuando use la palabra clave “var” en Swift. Hay algunas diferencias importantes.

La palabra clave “var” es la única forma de declarar una variable en Swift. El uso más común y conciso de la palabra clave “var” es declarar una variable y asignarle un valor.

var calle = "Trafalgar"

Recuerda que no terminamos esta línea de código con un punto y coma. Si bien un punto y coma es opcional en Swift, la práctica recomendada es no usar un punto y coma si no es necesario.

También es posible que haya notado que no especificamos un tipo al declarar la variable. Esto nos lleva a una de las características clave de Swift, la inferencia de tipos.

Conocimientos previos

Si nosotros deseamos construir una casa, edificio o máquina, nosotros necesitamos unos planos. En los planos muestran las características de tu casa tales como la cocina, baños, y habitaciones. 

Cuando se utiliza un plano de una casa, edificio o máquina, se pueden hacer réplicas de las mismas. En programación lo que se conoce por “tipo” es el plano y una instancia es la casa que se construye desde el tipo

El plano muestra las características y comportamiento esperado de la casa. En un tipo las características (colores, número habitaciones, etc.) se llaman propiedades y los comportamientos se llaman métodos (abrir la luz, abrir el grifo, etc.). 

En swift, la parte antes de un punto se conoce como la instancia y la parte posterior como el método. Por ejemplo: 

miCoche.abrePuertaCoche()

Inferencia de tipos

La instrucción anterior declara una variable llamada “calle” y le asigna el valor “Trafalgar”. En comparación con otros lenguajes tales como JavaScript o PHP, Swift da la falsa impresión que es un lenguaje sin tipo o de tipo suelto. Sin embargo, esto no es así, puesto que Swift es un lenguaje fuertemente tipado. La seguridad del tipo es una de las piedras angulares del lenguaje.

Apenas estamos empezando y Swift ya nos muestra un poco de su magia. Aunque la instrucción anterior no especifica explícitamente un tipo, la variable “calle” es de tipo “string”. Ésta es la inferencia de tipo de Swift en acción. El valor que asignamos a “calle” es una cadena. Swift es lo suficientemente inteligente como para ver eso e implícitamente establece el tipo “calle” a “String”.

La siguiente instrucción dará el mismo resultado. La diferencia es que establecemos explícitamente el tipo de la variable. Esta afirmación indica literalmente que “calle” es de tipo “string”. 

var calle: String = "Trafalgar"

Swift requiere que establezca explícita o implícitamente el tipo de variables y constantes. Si no lo hace, Swift se queja lanzando un error. Agregue la siguiente línea a su Playground para ver a qué me refiero.

var numero

Esta afirmación sería perfectamente válida en JavaScript o PHP. En Swift, sin embargo, no es válido. La razón es simple. Aunque se declare una variable usando la palabra clave “var”, no especificamos el tipo de variable. Swift no puede inferir el tipo ya que no asignamos un valor a la variable. Si hace clic encima del error, Xcode le indica que hay un error instrucción.

Falta anotación de tipo en el patrón

Podemos solucionar fácilmente este problema haciendo una de dos cosas. Podemos asignar un valor a la variable como lo hicimos anteriormente, o podemos especificar explícitamente un tipo para la variable. Cuando establecemos explícitamente el tipo, el error desaparece. La siguiente línea de código dice que numero es de tipo String.

var numero: String

Cambio de tipo

Cómo puede ver a continuación, asignar nuevos valores a “calle” y “numero” es simple y no tiene sorpresas.

var calle: String = "Trafalgar"
var numero: String
Calle = "Mayor de Lugo"
numero = "10"

En el caso de los valores numéricos, no es necesario almacenar el número de calle como una cadena. Veamos qué pasa si lo hacemos.

var street: String = "Trafalgar"
var numero: String
Calle = "Alfonso XII"
numero = 10

Si asignamos un entero a la variable “numero”, Xcode nos arroja otro error. El mensaje de error es claro. No podemos asignar un valor de tipo numérico a una variable de tipo “String”. Esto no es un problema en otros lenguajes de programación, pero sí en Swift.

Swift es un lenguaje fuertemente tipado en el que cada variable tiene un tipo específico, y ese tipo no se puede cambiar. 

Para deshacernos del error, necesitamos declarar la variable “numero” como un “int.

var calle: String = "Trafalgar"
var numero: Int
calle = "Calle Brasilia"
numero = 30

Resumiendo

Es importante que tenga en cuenta lo siguiente. Puede declarar una variable con la palabra clave “var” y no es necesario declarar explícitamente el tipo de variable. Sin embargo, recuerde que cada variable, y constante, tiene un tipo en Swift. Si Swift no puede inferir el tipo, entonces se queja. Cada variable tiene un tipo, y ese tipo no se puede cambiar.

Constantes

Las constantes son similares a las variables en términos de tipificación. La única diferencia es que el valor de una constante no se puede cambiar una vez que tiene un valor. El valor de una constante es inmutable

Declarar constantes

Para declarar una constante, utilice la palabra clave “let”. Echa un vistazo al siguiente ejemplo en el que declaramos como una constante en lugar de una variable.letcalle

let calle: String = "Trafalgar"
var numero: Int
calle = "Calle Rafaelo”
numero = 10

Si sólo actualizamos la primera línea, reemplazar var con let, Xcode arroja un error por razones obvias. Intentar cambiar el valor de una constante no está permitido en Swift. Eliminar o comentar la línea en la que intentamos asignar un nuevo valor a “calle” para deshacernos del error.

let calle: String = "Trafalgar"
var numero: Int
//calle = "Trafalgar"
numero = 30

Uso de constantes

Como habrá observado el empleo de las constantes es sencillo en Swift. No se necesita emplear palabras clave exóticas o una sintaxis compleja. Declarar constantes es tan fácil como declarar variables.

Swift fomenta el empleo de constantes. Si un valor no va a cambiar o no se espera que cambie, entonces debería ser una constante. Esto tiene una serie de beneficios. Uno de los beneficios es el rendimiento, pero un beneficio más importante es la seguridad. Al usar constantes siempre que sea posible, se agregan restricciones al código, lo que da como resultado un código más seguro.

Tipos de datos

La mayoría de los lenguajes de programación tienen una amplia gama de tipos para almacenar cadenas, enteros, flotadores, etc. La lista de tipos disponibles en Swift es concisa. Echa un vistazo a la siguiente lista:

  • Int
  • Float
  • Double
  • String
  • Character
  • Bool

Es importante comprender que los tipos anteriores no son tipos básicos o primitivos. Son tipos que swift implementa mediante estructuras. Los tipos que encontramos en Swift no son los mismos que los tipos primitivos que hay, por ejemplo, en Objective-C.

Hay muchos más tipos de datos en Swift, como tuplas, matrices y diccionarios. 

Conversión de tipos

Hay un tema más que necesitamos entender que se denomina la conversión de tipos. Echa un vistazo al siguiente fragmento de Código Objective-C. Este bloque de código envía el valor 3,14 x 100 = 314,000000 a la consola.

int a = 100;
float b = 2.10;
NSLog(@"%f", (a * b));

El “Runtime” de Objective-C convierte “a” en un valor de coma flotante y lo multiplica por “b”. Vamos a reescribir el fragmento de código anterior usando Swift.

var a = 100
var b = 2.10
print(a * b)

Por ahora, ignoraremos la función “print(_:separator:terminator:)”. Primero vamos a centrarnos en la multiplicación de “a” por “b”. Swift infiere el tipo de “a” como entero (int) y b como “double”. Sin embargo, cuando el compilador intenta multiplicar “a” y “b”, nota que no son del mismo tipo. Esto puede no parecer un problema, pero lo es para Swift. Swift no sabe de qué tipo debería ser el resultado de esta multiplicación. ¿Debería ser un entero o un doble? 

Para solucionar este problema, debemos asegurarnos de que ambas partes de la multiplicación sean del mismo tipo. Swift no convierte implícitamente los operandos por nosotros, pero es fácil hacerlo. En el ejemplo siguiente, creamos un “double” del valor almacenado en “a”. Esto resuelve el error.

var a = 100
var b = 2.10
print(Double(a) * b)

Tenga en cuenta que el tipo de “a” no ha cambiado. A pesar de que el fragmento de código anterior puede parecer que los tipos se funden, no es lo mismo. Usamos el valor almacenado en “a” para crear un “double”, y ese resultado se usa en la multiplicación con” b”. El resultado de la multiplicación es de tipo “double”.

Lo que debe recordar es que Swift es diferente de C y Objective-C (u otros lenguajes). No convierte implícitamente los valores de las variables y constantes. Este es otro concepto importante entender.

Imprimir

En el fragmento de código anterior, invocó su primera función, print(_:separator:terminator:) . Esta función es similar a la NSLog de Objective-C. Es decir, imprime algo y agrega una nueva línea. Para imprimir algo en la consola o en el panel de resultados de la derecha, invoque print(_:separator:terminator:) y le pasa un parámetro. Eso puede ser una variable, una constante, una expresión o un literal. Echa un vistazo a los siguientes ejemplos.

var cadena= "Esto es una cadena"
let constante = 2.10
print(cadena)
print(constante)
print(210 * 22)
print("Otro String")

También es posible usar la interpolación de cadenas para combinar variables, constantes, expresiones y literales. La interpolación de cadenas es muy fácil en Swift. Envuelva las variables, constantes, expresiones o literales en “\()”. 

let calle = "Trafalgar"
let numero = 10
print("Él trabaja en la \(calle) \(numero).")

Conclusión

Es muy importante entender cómo Swift maneja variables y constantes. Ciertamente puede llevar algún tiempo acostumbrarse al concepto de constantes. Sin embargo, una vez que haya adoptado esta práctica recomendada, el código generado será mucho más seguro y fácil de entender. 

Más información

Si deseas más información sobre cómo programar en Swift consulta en la web oficial de Apple. Para cualquier otra consulta, puedes contactar con nosotros. También nos puedes ayudar descargando nuestra APP de Servicios Profesionales, freelancers y autónomos.

Leave a Comment

Your email address will not be published. Required fields are marked *

Información básica sobre protección de datos
Responsable Francisco de Asís Benavente Delgado +info...
Finalidad Gestionar y moderar tus comentarios. +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios No se cederán datos a terceros, salvo obligación legal +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.