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"