diegoRodicio

View Categories

04. Tuplas

Tempo de lectura estimado: 1 minutos

As tuplas agrupan múltiples valores nun só valor composto. Os valores dentro dunha tupla poden ser de diferentes tipos (non teñen que ser do mesmo tipo entre si):

let usuario = ("drodicio", "IES San Mamede", "Director", 3, true)

No caso anterior creamos unha tupla que contén 5 valores:

  • Non todos son do mesmo tipo.
  • Estes valores son almacenados na constante usuario.

Neste exemplo,(404, "Not Found") é unha tupla que describe un código de estado HTTP.

  • Un código de estado HTTP é un valor especial devolto por un servidor web cada vez que se lle solicita unha páxina web.
  • O código de estado 404 Not Found é devolto se se solicita unha páxina web que non existe.
let http404Error = (404, "Not Found")
//http404Error é de tipo (Int, String) e é igual a (404, "Not Found")

As tuplas son particularmente útiles como valores devoltos por unha función

Acceso aos valores das tuplas

Podemos acceder aos valores das tuplas de varios xeitos.

1º xeito. Índices:

Podemos acceder aos distintos valores polo índice. Neste exemplo, como a tupla ten 5 valores, empezamos no 0 e acabamos no 4. Verás que ao compilar este código no Playground móstrase cada valor na barra de resultados e na consola.

let usuario = ("drodicio", "IES San Mamede", "Director", 23, true)

print(usuario.0)  //Visualiza "drodicio"
print(usuario.1)  //Visualiza "IES San Mamede"
print(usuario.2)  //Visualiza "Director"
print(usuario.3)  //Visualiza 23
print(usuario.4)  //Visualiza true

2º xeito. Descomposición de tuplas:

Podes descompoñer o contido dunha tupla en constantes ou variables separadas, ás que logo poderás acceder como de costume:

Esta é unha forma moito máis lexible e fácil de entender:

let (userName, organización, cargo, puntuación, isProUser) = ("drodicio", "IES San Mamede", "Director", 23, true)

print(userName)  //Visualiza "drodicio"
print(organización)  //Visualiza "IES San Mamede"
print(cargo)  //Visualiza "Director"
print(puntuación)  //Visualiza 23
print(isProUser)  //Visualiza true

Ao compilar vemos os mesmos valores que no caso dos índices, pero o noso código é moito máis claro. É dicir, entendemos mellor o noso código cando engadimos nomes que nos achegan un significado.

Isto é xusto o que comentabamos na sección anterior de engadir bos nomes ás nosas constantes e variables.

Outro exemplo:

let (codigoDeEstado, mensajeDeEstado) = http404Error

print("El código de estado es \(codigoDeEstado)")
//Imprime "El código de estado es 404"

print("El mensaje de estado es \(mensajeDeEstado)")
//Imprime "El mensaje de estado es Not Found"

3º xeito: nomear os elementos no momento da súa creación:

Podes nomear os elementos individuais nunha tupla ao momento de crear a tupla:

let http200Status = (codigoDeEstado: 200, descripcion: "OK")
print("El código de estado es \(http200Status.codigoDeEstado)")
//Imprime "El código de estado es 200"

print("El mensaje de estado es \(http200Status.descripcion)")

//Imprime "El mensaje de estado es OK"