No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Tuplas

15/22
Recursos

Aportes 83

Preguntas 8

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Después de investigar exactamente qué es una Tupla, ya que no creo que el video explique exactamente qué es, es como un tipo de Array y Objeto que puede tener diferente tipos de variables dentro aunque es más fácil verlo como un Objeto.

Ahora, en este tipo de lenguajes de programación siempre es buena idea no dejar sin declarar el tipo de variables que tendrá la Tupla (Tuple en inglés). La forma de hacerlo es de la siguiente forma:

let httpError: (Int, String) = (404, "Page not found") // Si quieren crearlo como un tipo de Array
let httpErrorObject: (errorType: Int, message: String) = (errorType: 404, message: "Page not found") // Si quieren tratarlos como Objetos

viniendo de js esto es el hijo de un array + un JSON

let pokemon = (name:"MewTwo", type:"mitico", age:100)
print("Hola humanos soy \(pokemon.name) tengo mas de \(pokemon.age) años entrenando y mi poder \(pokemon.type) los destruira a todos")

Comparándolo con Python es parecido a los diccionarios de este lenguaje.
Y ojo las tuplas de python (arrays no modificables) son estructuras de datos diferentes a las tuplas de Swift.

//Reto TUPLAS
let person = (nombre: "Wilson", apellido: "Montenegro", edad: 33)
print("Hola me llamo \(person.nombre) \(person.apellido) y tengo \(person.edad) años")

Hacer esto en Swift

let http202Created = (202, "Created")
let (statusCode, message) = http202Created

Me recuerda mucho al hacer una destructuración en JS:

const http202Created = { code: 202, message: "Created" }
const { code, message } = http202Created

Pues en TypeScript si que existen jeje.
No será lo mismo, pero puede que a alguien le sirva:

TS:

const notFoundResponse: [number, string] = [404, "Page not Found"];

//Access to the array tuple values
notFoundResponse[0]
notFoundResponse[1]

Se lo traduce de Swift:

let http404Error = (404, "Page not found")

//Decompose a tuple's contents into separate constants or variable
let (statusCode, statusMessage) = http404Error

print("StatusCode: \(statusCode)")
print("StatusMessage: \(statusMessage)")

una pequeña corrección, las tuplas sí existen en otros lenguajes, de hecho las tuplas en c# se manejan casi que de la misma manera que en swift

//TUPLA
let myPersonalInfo = (edad: 30, nombre: "Oscar", appellido: "Gonzalez")
print("Hola! yo me llamo: \(myPersonalInfo.nombre) \(myPersonalInfo.appellido) y tengo \(myPersonalInfo.edad) años de edad")```

ejercicio

Les comparto mi código 😃

let MyProfile = (name: "Bradley", lastName: "Cardenas", age: 20)
print("Hola, me llamo \(MyProfile.name) \(MyProfile.lastName) y tengo \(MyProfile.age) años" )

Siempre recuerden intentar dejar claro en todo momento el tipo de variable, para evitar en un futuro errores y ahorrar memoria en datos muy grandes. En una dupla tambien se puede declarar el tipo de dato de la siguiente manera.

let informationOfPerson:(name: String, lastName:String, age:Int8) = ("Alfonso", "Patron", 24)

print("Hola, mi nombre es \(informationOfPerson.name) \(informationOfPerson.lastName) y tengo \(informationOfPerson.age)")
Tuplasss
es como un objeto literal de js
// Excercise Tuplas

var nameAndSurname = ( name : "Francisco", surname: "Garcia")
var myAge : UInt8 = 25


print("My name is \(nameAndSurname.name) , \(nameAndSurname.surname) and I'm \(myAge) years old")
//RETO

let personalData = (name : "Jonathan", lastName: "Macalupu", age: 31)

print("¡Hola Mundo!, soy \(personalData.name) \(personalData.lastName) y tengo \(personalData.age) años")

Les comparto mi código:

	 let myInformation = (name: "Marisol", lastName: "Reyes", age: 25)
          print("Mi nombre es \(myInformation.name) \(myInformation.lastName) y tengo \(myInformation.age)")
var misDatos = (nombre: "jonymac", edad: 31)
print("mi nombre es \(misDatos.nombre) y mi edad es \(misDatos.edad)")```
let data = (nombre: "Donaldo", apellido: "Lopez", edad: 25)
print("Hola mi nombre es \(data.nombre) \(data.apellido) y tengo \(data.edad)")

Muy buena clase comparto mi código

//En caso de que quiera separar un resultado en tupla y asignarlo a variables se hace
let (statusCode, statusMessage) = http404Error
print(“El códifo del estado es (statusCode)”)
print(“El mensaje del servidor es (statusMessage)”)

/se puede extaer las tuplas sin necesidad de crear variables colocando punto y numero de posición como en un arreglo
print(“El código código del error es (http404Error.0) y el mensajes es (http404Error.1)”)

//otra manera de realizarlo una tapla es colocando las 2 variables directamente en la asignación
let http200Status = (statusPage: 200, description: “OK”)
print(“el código del estado es (http200Status.statusPage) y el mensaje es (http200Status.description)”)

Nunca habia escuchado sobre Tuplas, pero el concepto es conocido como los arreglos y los hashes, excelente clase

Uno de los mejores usos que se les darán a las tuplas serán para retornar multiples valores de una función

Hay dos formas de acceder a los valores de una tupla
La primera es que con el valor que hayamos escrito

Ejem

let httpError = (404, “Pagina no encontrada”)
print =(htttpError.404)

y la segunda forma de acceder es mediante la posición en la que se encuentra parecido de alguna forma a los arrays

print(htttpError.0)

//Reto: Edad nombre y apellido
let presentacion = (nombre: "Juanse", apellido: "Vargas", edad: 26)

print("Hola soy \(presentacion.nombre) \(presentacion.apellido) y tengo \(presentacion.edad) años")
//Output: Hola soy Juanse Vargas y tengo 26 años

Pienso que en el futuro me será útil tener las tuplas dentro de un array, así que lo hice.

//Creo una variable de tipo array que recibe tuplas
var macoteList : [(name : String, edad : UInt8)] = []

//Creo las tuplas
let perro = (name : "Vincent", edad : UInt8(12))
let gato = (name : "Annie", edad : UInt8(1))

//Agrego las tublas al array
macoteList.append( perro )
macoteList.append( gato )

//Imprimo el nombre del primer registro
print("Hola \(macoteList[0].name) estas viejito")


SWIFT no es el unico lenguaje que ocupa tuplas. Y hay lenguajes como elixir que permite mas implementaciones con las tuplas y con el pattern matching hasta el punto de poder lograr control flow

let me = (name: "José", surname: "Puicon", age: "22")
print("Mi nombre es: \(me.name), mi apellido: \(me.surname) y mi edad es \(me.age) años")

let russianPassportDates = (93062833, “Carlos Adrian Valdes”, “Masculino”)
let (numero, nombre, sexo) = russianPassportDates

print(“El pasajero (russianPassportDates.1) de sexo (russianPassportDates.2), con numnero de pasaporte (russianPassportDates.0) puede ingresar al pais.”)

aca va mi ejemplo

let tuplaejemplo = (17, "cami")
let (edad, nombre) = tuplaejemplo
print("Hola, mi nombre es \(nombre)")
print(" Y tengo \(edad) años")

Viniendo de python esto me hace recordar a un diccionario

Reto : Crear una tupla donde aparezca edad, nombre y apellido y con print hacer una oracion

let ejercicio = (edad: 24, nombre : "Andre", apellido: "Bezada")
print("Hola me llamo \(ejercicio.nombre) \(ejercicio.apellido) y tengo \(ejercicio.edad) años de edad") 

El reto resuelto:

let persona = (edad: 31, nombre: "Ivan", apellido: "Mazzalay")
print("El usuario se llama \(persona.nombre) \(persona.apellido) y su edad es \(persona.edad) años")

My solucion 😃

// tupla --> Edad, Nombre, apellido | luego saludar a usuario

let myInformation = (name: "Gabo", lastName: "Munoz", myAge: 22)

print("Hola soy \(myinformation.name) \(myinformation.lastName) y tengo \(myinformation.myAge) anios de edad") 

Así es como he hecho el ejercicio propuesto:

let yo = (nombre: "Francisco Javier", apellidos: "Gallego Lahera", edad: 21)
print("Hola, me llamo \(yo.nombre) \(yo.apellidos) y tengo \(yo.edad) años")

Mi propuesta para utilizar tuplas

let personInfo = (name:"Emmanuel",lastName:"H. Ramirez",age:21)

print("""
      Hello my name is 
      \(personInfo.name) \(personInfo.lastName) 
      and I'm \(personInfo.age) years old
      """)

Reto realizado

Veo que con las tuplas y el typealias también podemos crear algo como las interfaces, ya que podemos podemos indicar la estructura y tipos de datos de una tupla. Siguiendo con el ejemplo de la clase:

typealias httpReponse = (statusCode: UInt16, description: String)

let http200Status: httpReponse = (200, "OK")
let http404Error: httpReponse = (404, "Not Found")
let http500Error: httpReponse = ("500", "Internal Error") //Esto da error por no cumplir el tipo de dato de statusCode que definimos

print("El codigo de estado es \(http200Status.statusCode) y el mensaje \(http200Status.description)")

👨🏽‍💻

let personalData = (name: "Jose", age: 23, job: "QA Analyst", hobby: "Aprender nuevos lenguajes de programación")
print("Hola, me llamo \(personalData.name), tengo \(personalData.age) años, trabajo como \(personalData.job) y mi mayor hobby es \(personalData.hobby)")

espero este bien xd

let date = (28, "Sebastian Arluna", "Argentinian")
let (Age, Name, Nacionality) = date

print("I am \(age) years old, my name is \(Name), I am \(Nacionality)")

let dateName = (Age : 29, Name : "Sebastian", Nacionality : "Argentinian")

print("I am \(dateName.Age) years old, my name is \(dateName.Name), I am \(dateName.Nacionality)")

Me parece un lenguaje muy parecido a Python en cuanto a estructuras de datos.

let iAm = (username: "nix1124", age: 17);
print("Hi, my username in Platzi is: \(iAm.username), and my age is \(iAm.age)");
let myself = (name: "Lionel", surname: "Messi" , age: 33)
print("mi nombre es \(myself.name) mi apellido es \(myself.surname) y mi edad es \(myself.age)")

La actividad

let miInformation = (name: "Gera", lastName: "Martinez", age: 25)
print("Mi nombre es \(miInformation.name) \(miInformation.lastName) y tengo \(miInformation.age) años.")
let saludo = (nombre: "Carlos", apellido: "Quintana", edad: 42)
print("Hola me llamo \(saludo.nombre) \(saludo.apellido) y tengo \(saludo.edad) años")


😃

let profile = (name: "Andrea", age:28)
print("Hola, mi nombre es: \(profile.name) y tengo \(profile.age) años ")
let myProfile = (age: 32, firstName: Andres, lastName: Galo)
print(“Hola mi nombres es \(myProfile.firstName)  \(myProfile.lastName) y tengo \(myProfile.age) años de edad”)

Acá va el reto completado

//Reto Tuplas
let myInfo = (age: 22, firstName: "Ricardo", lastName: "Saenz")
print("Hola! mi nombre es \(myInfo.firstName) \(myInfo.lastName) y tengo \(myInfo.age) años")

Les comparto mí código:

Resultado:

Pfff, me enamoré de las tuplas.

¡Hola! Aquí dejo mi aporte aunque me ha entrado dos dudas.

  • La primera es el import, he notado que el tipo de import ha cambiado automáticamente, primero fue UIkit, después cambio a CoreFundation y finalmente a Security, quisiera saber porque es que se da ese cambio.

  • A parte de ello, quisiera entender también porque la var (age, name, surName) = myCompleteData puede ser un let a pesar de que *var myCompleteData = (25,“Kenyi Wilson”,“Zuñiga Teran”) es una var y no un let.

PD: Dentro de la captura verán que está con var, pero si en el código lo ponen como let, verán que no saltará ninguna alerta.
¡Quedo atento, muchas gracias!


import UIKit
import CoreFoundation
import Security

var myCompleteData = (25,"Kenyi Wilson","Zuñiga Teran")
var (age, name, surName) = myCompleteData // ¿Por qué puedo usar let?

print("Hola mi nombre es \(myCompleteData.1)\(myCompleteData.2) y tengo \(myCompleteData.0) años de edad.")

Muy bien explicado.

let myInformation = (name: "Sergio", lastName: "Medina", age: 26)
print("Hola, me llamo \(myInformation.name) \(myInformation.lastName) y tengo \(myInformation.age) años" )
let datosJavier = (nombre: "Javier", edad: 28, apellido: "Ayora", deporte: "CrossFit")

print("Hola soy \(datosJavier.nombre) me apellido \(datosJavier.apellido) tengo \(datosJavier.edad) y hago \(datosJavier.deporte) para mantenerme saludable")

Hola soy Javier me apellido Ayora tengo 28 y hago CrossFit para mantenerme saludable

No sabia que las tuplas permitian más de 2 valores, siempre las vi como un mapa, key and value

let personalDate: (name: String, lastname: String, age: Int8) =  (name: "Fernando", lastname: "Romero", age: 25)

print("Hola mi nombre es", personalDate.name, personalDate.lastname, "y tengo", personalDate.age, "años")

Esto se parece a los Maps en Dart

Map persona = {
	'name' : 'Jonathan",
	true : 28,
	19 : [1,'gi',true]
	}

Es como la destructuración de js

//Crear tuppla con nombre y edad
let perfilInfo = (name: "Camilo", age: 28)
print("Hola 👋🏼,  mi nombre es \(perfilInfo.name) y tengo \(perfilInfo.age) años")

Característica Tuplas en Swift Tuplas en Python Listas en Python
Mutabilidad Inmutable Inmutable Mutable
Declaración let myTuple = (value1, value2) my_tuple = (value1, value2) my_list = [value1, value2]
var myTuple = (value1, value2)
Modificación No se puede modificar después de la creación No se puede modificar después de la creación Se puede modificar después de la creación
myTuple.0 = 5 (Genera un error) my_tuple = (5, my_tuple[1]) my_list[0] = 5
my_tuple = ([1, 2], [3, 4]) my_list = [1, 2, 3, 4]
Acceso Por índice o descomposición de patrones Por índice o descomposición de patrones Por índice o métodos como append, pop, etc.
let firstElement = myTuple.0 first_element = my_tuple[0] first_element = my_list[0]
Ejemplo de creación let myTuple = (1, "hello") my_tuple = (1, "hello") my_list = [1, "hello"]
Ejemplo mutable No aplica mutable_tuple = ([1, 2], [3, 4]) mutable_list = [1, 2, 3, 4]
let User = ( username: "Ronaldo", age: 23, lastname: "avalos")
print("Hola me llamo \(User.username) \(User.lastname) y tengo \(User.age) años")

**let** nombrePersona = ("Alex", 25, 1.79, "México") print("Hi Mi nombre es \\(nombrePersona.0) y tengo \\(nombrePersona.1) con una estatura de \\(nombrePersona.2) de \\(nombrePersona.3)")
// Tupla con nombre, edad y apellidos. Usar el print para saludar: // Ejercicio para usar cada ítem de la tupla por fuera de la tupla. **let** personalInformation = (Name: "Cristian", Surname: "Castillo", Age: 21) print ("Hola! Soy \\(personalInformation.Name) y mi apellido es \\(personalInformation.Surname). Tengo \\(personalInformation.Age) años de edad.") // print: Hola! Soy Cristian y mi apellido es Castillo. Tengo 21 años de edad **let** AppleDevices = ("iPhone", "iPad", "MacBook") **let** (personalDevice, toDesign, toProgramm) = AppleDevices print ("Uso el \\(personalDevice) en mi día a día. Para diseñar, siempre llevo conmigo \\(toDesign). Y por las tardes, siempre uso mi \\(toProgramm) para escribir código usando Swift. Es grandioso!") // print: Uso el iPhone en mi día a día. Para diseñar, siempre llevo conmigo iPad. Y por las tardes, siempre uso mi MacBook para escribir código usando Swift. Es grandioso!\n"

¡Lo tengo! Me encanta 😍 aprender a programar jamás me pareció tan fácil

// Ejercicio crear tupla donde aparezca la edad, nombre y apellido. Utiliza print para saludad
let PersonalData = (myAge : 27,
                    myName :"Edgardo",
                    myLastName : "Marcano")
print("Hola! Mi nombre es \(PersonalData.myName) \(PersonalData.myLastName) y tengo \(PersonalData.myAge). Es un gusto saludarte.")

Si vienes de React el ejemplo mas claro de una Tupla es un useState, esto ya lo tienen varios lenguajes o super sets de lenguajes como TypeScript

let persona: (edad: Int, nombre: String, apellido: String) = (25, “Jhon”, “Miranda”)
print(“Nombre completo: (persona.nombre) (persona.apellido)”)
print(“Edad: (persona.edad)”)

Lo mas parecido a una Tupla en kotlin es:

val http404Error = Pair<Int, String>(404, "Object not found")

Por que es cierto eso de que en otros lenguajes es medio raro 😝

let datos = (edad: 18, primerNombre: yerson, segundoNombre: steven)
print("hola mi nombre es: \(datos.primerNombre) \(datos.segundoNombre) y tengo \(datos.edad)")

Swift es una belleza 😍

Resuelvo el desafío, swift es genial!

Muy buena la clase, pero typeScript también cuenta con tuplas.

En C# 7.0 ya existen las tuplas!

PHP permite tuplas tambien.

logre comprender como las tuplas pueden facilitar el realizar muchas tareas y que no es complicado poder implementarlas

Algo muy similar se puede hacer en C#

let person = (name : "Arturo" , age : 42)
print("Hola me llamo \(person.name) y tengo \(person.age) años")
let miNombreCompleto = (nombre: "Fernando", primerApellido: "Paredes", segundoApellido: "Rios")
print("Mi nombre completo es: \(miNombreCompleto.nombre) \(miNombreCompleto.primerApellido) \(miNombreCompleto.segundoApellido)")
**```

El concepto de las tuplas en swift me parecio genial, me diverti mucho en esta clase.