No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Adquiere por un a帽o todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/a帽o

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

2D
2H
37M
49S

Tuplas

15/22
Recursos

Aportes 77

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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")```

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" )

ejercicio

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, 鈥淛hon鈥, 鈥淢iranda鈥)
print(鈥淣ombre completo: (persona.nombre) (persona.apellido)鈥)
print(鈥淓dad: (persona.edad)鈥)

let User = ( username: "Ronaldo", age: 23, lastname: "avalos")
print("Hola me llamo \(User.username) \(User.lastname) y tengo \(User.age) a帽os")

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 馃槤

//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")

Es como la destructuraci贸n de js

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)")
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 馃槏

Esto se parece a los Maps en Dart

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

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")

Resuelvo el desaf铆o, swift es genial!

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

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)")

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" )

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)")

Reto realizado

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,鈥淜enyi Wilson鈥,鈥淶u帽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.")

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

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

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
      """)

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")

Les comparto m铆 c贸digo:

Resultado:

//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")

Ac谩 va el reto completado

let myProfile = (age: 32, firstName: Andres, lastName: Galo)
print(鈥淗ola mi nombres es \(myProfile.firstName)  \(myProfile.lastName) y tengo \(myProfile.age) a帽os de edad鈥)

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") 

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")

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") 

Viniendo de python esto me hace recordar a un diccionario

馃槂

let profile = (name: "Andrea", age:28)
print("Hola, mi nombre es: \(profile.name) y tengo \(profile.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")


En C# 7.0 ya existen las tuplas!

aca va mi ejemplo

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

let russianPassportDates = (93062833, 鈥淐arlos Adrian Valdes鈥, 鈥淢asculino鈥)
let (numero, nombre, sexo) = russianPassportDates

print(鈥淓l pasajero (russianPassportDates.1) de sexo (russianPassportDates.2), con numnero de pasaporte (russianPassportDates.0) puede ingresar al pais.鈥)

PHP permite tuplas tambien.
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 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.")

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")


let iAm = (username: "nix1124", age: 17);
print("Hi, my username in Platzi is: \(iAm.username), and my age is \(iAm.age)");
// 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")
let data = (nombre: "Donaldo", apellido: "Lopez", edad: 25)
print("Hola mi nombre es \(data.nombre) \(data.apellido) y tengo \(data.edad)")
//RETO

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

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

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(鈥淓l c贸difo del estado es (statusCode)鈥)
print(鈥淓l 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(鈥淓l 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: 鈥淥K鈥)
print(鈥渆l c贸digo del estado es (http200Status.statusPage) y el mensaje es (http200Status.description)鈥)

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)")

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

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, 鈥淧agina 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)

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

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

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

var misDatos = (nombre: "jonymac", edad: 31)
print("mi nombre es \(misDatos.nombre) y mi edad es \(misDatos.edad)")```
//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
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.

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")