CursosEmpresasBlogLiveConfPrecios

Trailing Closures

Clase 10 de 16 • Curso de Programación con Swift: Funciones (2019)

Clase anteriorSiguiente clase

Contenido del curso

Funciones

  • 1
    Qué aprenderás sobre las funciones en Swift

    Qué aprenderás sobre las funciones en Swift

    01:57 min
  • 2
    Declarar una función

    Declarar una función

    05:36 min
  • 3
    Parámetros de entrada

    Parámetros de entrada

    05:31 min
  • 4
    Valores de Retorno, Optionals y Parámetros de Salida

    Valores de Retorno, Optionals y Parámetros de Salida

    11:04 min
  • 5
    Etiquetas de Params y Variadics

    Etiquetas de Params y Variadics

    10:14 min
  • 6
    Parámetros tipo inout

    Parámetros tipo inout

    07:37 min
  • 7
    Function Types

    Function Types

    11:13 min
  • 8
    Nested Functions

    Nested Functions

    04:32 min

Tipos de Closures

  • 9
    Closures

    Closures

    13:48 min
  • 10
    Trailing Closures

    Trailing Closures

    Viendo ahora
  • 11
    Capturar Valores

    Capturar Valores

    06:29 min
  • 12
    Escaping Closure

    Escaping Closure

    09:54 min

Enumeradores

  • 13
    Enumerations, clase vaga

    Enumerations, clase vaga

    10:05 min
  • 14
    Enumerations, "códigos de barras"

    Enumerations, "códigos de barras"

    07:59 min
  • 15
    Enumeradores con raw values

    Enumeradores con raw values

    09:55 min

Cierre

  • 16
    Conclusión

    Conclusión

    01:51 min
Tomar examen
    Wilson Montenegro

    Wilson Montenegro

    student•
    hace 6 años

    // Reto

    let numbers = [-9, 34 , -23, -2127 ,46, -6] let numbersStrings = numbers.map{ (number) -> String in var number = number var output = "" let minus = "menos" let negative = number number = number < 0 ? number * -1 : number repeat{ output = digitNames[number%10]! + output number /= 10 }while number > 0 output = negative < 0 ? minus + output : output return output } print(numbersStrings)

    ["menosNueve", "TresCuatro", "menosDosTres", "menosDosUnoDosSiete", "CuatroSeis", "menosSeis"]

    jean pierre gabriel nieto acosta

    jean pierre gabriel nieto acosta

    student•
    hace 6 años

    Los clousures son más o menos como funciones anónimas que se escriben un tanto diferente

      Ignacio Castillejo Gómez

      Ignacio Castillejo Gómez

      student•
      hace 6 años

      Así es!! jajaja

      jean pierre gabriel nieto acosta

      jean pierre gabriel nieto acosta

      student•
      hace 6 años

      la verdad este lenguaje me parece una mezcla de js con c#. No se si solo soy yo

    Julio Ceballos

    Julio Ceballos

    student•
    hace 4 años
    Captura de Pantalla 2021-09-30 a la(s) 8.27.19 p. m..png
    Martin Armando Figueroa

    Martin Armando Figueroa

    student•
    hace 5 años
    let digitNames = [0:"Cero", 1:"Uno", 2:"Dos", 3:"Tres", 4:"Cuatro", 5:"Cinco", 6:"Seis", 7:"Siete", 8:"Ocho", 9:"Nueve"] let numbers = [-16,58,-510,2127,-94] let numberStrings = numbers.map { (number) -> String in let signal = (number < 0) ? "Menos" : "" var number = (number > 0) ? number : number*(-1) var output = "" repeat{ output = digitNames[number%10]! + output number /= 10 } while number > 0 return signal+output } numberStrings
    Hugo Andrés Guerrero Portilla

    Hugo Andrés Guerrero Portilla

    student•
    hace 4 años
    let digitNames = [0:"Cero", 1:"Uno", 2:"Dos", 3:"Tres", 4:"Cuatro", 5:"Cinco", 6:"Seis", 7:"Siete", 8:"Ocho", 9:"Nueve"] let numbers = [16, -58, 510, 2127] let numberStrings = numbers.map { (num) -> String in var number = num < 0 ? num * -1 : num var output = "" repeat{ output = digitNames[number%10]! + output number /= 10 }while number > 0 return num < 0 ? "negativo" + output : output }
    Fernando Moreno Tovar

    Fernando Moreno Tovar

    student•
    hace 4 años

    Reto usando optional binding en el output

    let numbers = [-97, -1, 16, 58, -510, 2127] let numberStrings = numbers.map {(number) -> String in let initNumber = number var number = number < 0 ? number * -1 : number var output = "" repeat{ if let modulOfTen = digitNames[number%10] { output = modulOfTen + " " + output number /= 10 } }while number > 0 output = initNumber < 0 ? "Menos " + output : output return output }
    David Barreto

    David Barreto

    student•
    hace 5 años

    En Platzi 💚lo mejor es la comunidad, viendo esta clase y los aportes de los otros estudiantes me ayudo muchisimo a resolver el reto, gracias a todos!

    Maximiliano A Filsinger

    Maximiliano A Filsinger

    student•
    hace 3 años

    Me da este error y no encuentro que puedo haber escrito mal, a alguien le paso?

    Screenshot 2023-01-03 at 11.18.58 AM.png
    Jhon Edison Parra Londoño

    Jhon Edison Parra Londoño

    student•
    hace un año

    Por aca dejo mi implementación

    let numbersString = numbers.map{ (number) -> String in var numberTem = number < 0 ? -1*number : number var output = "" repeat{ output = digitNames[numberTem%10]! + output numberTem /= 10 }while numberTem > 0 return number < 0 ? "Menos"+output : output }
    Anthony Alexis Rubio Perez

    Anthony Alexis Rubio Perez

    student•
    hace 2 años
    let digitNames = [0:"Zero",1: "One",2:"Two",3:"Three",4:"Four",5:"Five",6:"Six",7:"Seven",8:"Eight",9:"Nain"] let numbers = [16,58,510,-2127] let numbersString = numbers.map { (number) -> String in var isNegative = number < 0 var numberEdittable = isNegative ? (number * -1) : number var output = "" repeat{ output = digitNames[numberEdittable%10]! + output numberEdittable /= 10 }while numberEdittable > 0 if isNegative { output.insert("-", at: output.startIndex) } return output } ```**let** digitNames = \[0:"Zero",1: "One",2:"Two",3:"Three",4:"Four",5:"Five",6:"Six",7:"Seven",8:"Eight",9:"Nain"] **let** numbers = \[16,58,510,-2127] **let** numbersString = numbers.map { (number) -> String **in** **var** isNegative = number < 0 **var** numberEdittable = isNegative ? (number \* -1) : number **var** output = "" **repeat**{ output = digitNames\[numberEdittable%10]! + output numberEdittable /= 10 }**while** numberEdittable > 0 **if** isNegative { output.insert("-", at: output.startIndex) } **return** output }
    Joseal Pantoja Durán

    Joseal Pantoja Durán

    student•
    hace 2 años

    Dejo mi Aporte

    let digitNames2 = [0: "Cero", 1: "Uno", 2: "Dos", 3: "Tres", 4: "Cuatro", 5: "Cinco", 6:"Seis", 7: "Siete", 8: "Ocho", 9: "Nueve"] let numbers2 = [-5, -16, 58, 510, -2127] let numberString2 = numbers2.map { (number) -> String in var number = number var output = "" if number < 0{ number *= -1 repeat{ output = digitNames2[number%10]! + output number /= 10 } while number > 0 output = "menos" + output return output } else { repeat{ output = digitNames2[number%10]! + output number /= 10 } while number > 0 return output } } print() print("*******") print(numberString2)
    im x3x0z

    im x3x0z

    student•
    hace 2 años

    Esta muy bueno swift, se parece mucho a Kotlin

    Peter Herrera Quimis

    Peter Herrera Quimis

    student•
    hace 2 años
    Jose Carlos Florez Vergara

    Jose Carlos Florez Vergara

    student•
    hace 2 años
    var numbers = [0: "cero", 1: "uno", 2: "dos", 3: "tres", 4: "cuatro", 5: "cinco", 6: "seis", 7: "siete", 8: "ocho", 9: "nueve"] var cifras = [23,56,128,2546,-10, -1234] var cifrasNumeros = cifras.map{ (numero) -> String in var numero = numero var output = "" var signo = "" if numero < 0{ numero *= -1 signo = "menos " } repeat{ output = numbers[numero%10]! + output numero /= 10 }while numero > 0 return signo + output } print(cifrasNumeros)
    Ángel Alberto Rivas Álvarez

    Ángel Alberto Rivas Álvarez

    student•
    hace 2 años

    Reto:

    let numberStrings = numbers.map { (number) -> String in var number = number; let isNegative = String(number).hasPrefix("-"); if isNegative { number *= -1; } print(isNegative); var output = String(); repeat { // Number % 10 => always returns the last digit in any given number. output = digitNames[number%10]! + output; // <-- The ! at the end is a force unwrapping. number /= 10; } while number > 0; if isNegative { output = "minus " + output; } return output; }
    Fernando Romero

    Fernando Romero

    student•
    hace 2 años
    let dicNumeros = [0:"Cero", 1:"Uno", 2:"Dos", 3:"Tres", 4:"Cuatro", 5:"Cinco", 6:"Seis", 7: "Siete", 8: "Ocho", 9:"Nueve"] let numeros = [17, -1, 1997, -15, 1, -1998] var texto: [String] = [] numeros.map{numero -> Void in var output = "" var numero = numero var numeroNegativo = false if (numero < 0 ) { numero *= -1 numeroNegativo = true } repeat { output = dicNumeros[numero%10]! + output numero /= 10 } while numero > 0 if numeroNegativo { output = "-" + output } texto.append(output) }
    Edwin Mejia

    Edwin Mejia

    student•
    hace 2 años
    let numbers2 = [16,-58,510,2127] let numbersStrings2 = numbers2.map{ (number) -> String in var number = number var output = "" func numberString (_ number : inout Int, _ output : inout String) -> String{ repeat{ output = digiNames[number%10]!+" "+output number /= 10 }while number > 0 return output } if number < 0 { number = -number return "menos "+numberString(&number,&output) }else{ return numberString(&number,&output) } }
    Raúl Gallego Alonso

    Raúl Gallego Alonso

    student•
    hace 2 años

    // Ejercicios

    let digitNames = [ 0: "Cero", 1: "Uno", 2: "Dos", 3: "Tres", 4: "Cuatro", 5: "Cinco", 6: "Seis", 7: "Siete", 8: "Ocho", 9: "Nueve" ] let numbers = [-27, 0, -123, 456] let numbersString = numbers.map { (number) -> String in var number = number var isNegative = false var output = "" if number < 0 { isNegative = true number *= -1 } repeat { output = digitNames[number % 10]! + output number /= 10 } while number > 0 if isNegative { output = "-" + output } return output }
    Luis Carlos Garavito Romero

    Luis Carlos Garavito Romero

    student•
    hace 3 años

    Encontré una forma de hacerlo usando la propiedad magnitude del number:

    let digitNames = [0: "Cero", 1: "Uno", 2: "Dos", 3: "Tres", 4: "Cuatro", 5: "Cinco", 6: "Seis", 7: "Siete", 8: "Ocho", 9: "Nueve"] let numbers = [-16, 58, -510, 2127] let numberStrings = numbers.map { number -> String in let isNegative = number < 0 var number = number.magnitude var output = "" repeat { output = digitNames[Int(number)%10]! + " " + output number /= 10 } while number > 0 if isNegative { output = "Menos " + output } return output } print(numberStrings)
    Ingrid Fernanda Banguero Espitia

    Ingrid Fernanda Banguero Espitia

    student•
    hace 3 años

    Aquí mi aporte: agregue un variable que me guarda el número original y dependiendo de ello realizo las respectivas validaciones.

    let numbers = [-16, 58, -510, 2127] let numberString = numbers.map{(number) -> String in var initNumber = number var number = number var output = "" number = initNumber < 0 ? initNumber * -1 : initNumber repeat { output = digitNames[number%10]! + output number /= 10 } while number > 0 output = initNumber < 0 ? "Menos" + output : output return output }

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads