En este nuevo artículo hablaremos del concepto de tupla en el lenguaje Swift, una nueva estructura de datos que ha introducido el nuevo lenguaje de programación de Apple. Las tuplas agrupan múltiples valores en un único valor compuesto, es decir, son como una especie de «contenedores» de datos.
Los valores incluidos dentro de una tupla pueden ser de cualquier tipo de datos y no tienen por qué ser del mismo tipo entre ellos.
Tupla en el lenguaje Swift
En este ejemplo, (404, «No encontrada») es una tupla en el lenguaje Swift que describe un código de estado HTTP, el cual informará del estado de una petición de página hecha a un servidor Web. Como ya imagino que sabréis, este código de estado indica que la página que hemos solicitado no existe.
let error404 = (404, »Not encontrada»)
// error404 incluye los tipos de datos (Int, String) y es igual a (404, «No encontrada»)
La tupla (404, »Not encontrada») agrupa un valor entero Int y otro de tipo cadena de caracteres String que va a proporcionar el código HTTP en valores separados: un número comprensible por la máquina y una frase comprensible por los seres humanos. Esta puede ser descrita como «una tupla de tipo (Int, String)”.
Podemos crear tuplas que contengan los tipos de datos que necesitemos en cualquier momento para nuestros programas. Por ejemplo, podríamos tener una tupla de tipo (Int, Int, Int) y otra de tipo (String, Bool). Estas es posible descomponerlas en constantes o variables por separado de la forma que muestra el siguiente ejemplo:
let (codigoEstado, mensaje) = error404
println (»El código de estado es \(codigoEstado)»)
// muestra en consola la frase «El código de estado es 404»
println (»El mensaje de estado es \(mensaje)»)
// muestra en consola «El mensaje de estado es No encontrada»
Si únicamente necesitamos acceder a ciertos valores podremos ignorar la parte de la tupla que no nos interese mediante su sustitución por un guión bajo (_) como vemos en el siguiente fragmento de código:
let (soloElCodigo, _) = error404
println(»El código de estado es\(soloElCodigo)»)
// muestra en consola «El código de estado es 404»
Se puede también acceder a los elementos individuales de una tupla en el lenguaje Swift mediante el uso de un índice numérico, que siempre comienza en la posición cero como se puede ver en el siguiente código:
println (»El código de estado es \(error404.0)»)
// muestra en consola la frase «El código de estado es 404»
println (»El mensaje de estado es \(error404.1)»)
// muestra en consola «El mensaje de estado es No encontrada»
Si lo necesitásemos, se nos va a permitir poner nombre a cada uno de los elementos de la tupla cuando la estamos definiendo. En el siguiente ejemplo nombramos los dos valores, uno con codigoEstado y otro con descripción:
let estadoHttp200 = (codigoEstado: 200, descripción: »OK»)
Al hacer lo anterior podremos usar el nombre del elemento para acceder a su valor dentro de la tupla en el lenguaje Swift:
println (»El código de estado es \(estadoHttp200.codigoEstado)»)
// muestra en consola la frase «El código de estado es 200»
println (»El mensaje de estado es \(estadoHttp200.descripción)»)
// muestra en consola «El mensaje de estado es OK»
Las tuplas son muy útiles cuando queremos devolver varios valores en una función. Por ejemplo, una función que intente acceder a una página web puede devolver una tupla de tipo (Int, String) para describir lo que sucede en la petición. Al devolver valores de tipos distintos la función proporciona información más útil que si únicamente devolviese un valor sencillo con lo que, en ciertos casos, nos va a evitar escribir gran cantidad de funciones que realicen tareas parecidas.
Hay que tener en cuenta que las tuplas tienen que tener un carácter temporal y que no están destinadas a la creación de complejas estructuras de datos. En ese caso, el modelo de clase o de estructura es mucho más recomendado que el de una tupla. De ambos modelos hablaremos en posteriores artículos.
Hasta aquí la lección en la que hemos hablado del concepto de Tupla en el lenguaje Swift. Espero que os haya resultado interesante este nuevo concepto en el mundo de la programación y que encontréis muchos huecos en vuestro código donde poder utilizarlo. Nos leemos en el próximo!
let despedida = (Adiós, »os!!»)