Inferencia en cierres
Comprenda la inferencia de parámetros y valores devueltos en los cierres.
Inferencia en cierres es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
Los closures infieren tipos
En muchos contextos, un closure puede inferir tanto el tipo de sus parámetros como el de su valor devuelto a partir de cómo se utiliza.
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)Tipo de parámetro inferido
Cuando pasa un closure a map, el tipo de los elementos indica a Swift qué es $0, por lo que puede omitir el tipo del parámetro.
let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)Tipo devuelto inferido
El cuerpo del closure determina el tipo que devuelve. Devolver un Bool convierte el closure en un predicado.
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)Nombres abreviados de argumentos
$0, $1 y los siguientes hacen referencia a los argumentos del closure según su posición cuando sus tipos se infieren.
let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))Parámetros explícitos cuando sea necesario
Aun así, puede asignar nombres a los parámetros y anotar sus tipos si eso mejora la claridad.
let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
return a < b
}
print(sorted)Inferencia a partir del contexto
Si asigna un closure a una variable con tipo, el tipo de la variable indica cuál es la signatura del closure.
let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))Closure final
La sintaxis de closure final mantiene la inferencia y, al mismo tiempo, hace que los puntos de llamada sean más legibles.
let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)Inferencia en reduce
En reduce, los tipos del acumulador y de los elementos se infieren a partir del valor inicial y de la secuencia.
let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)Devolver desde un closure
Los closures de una sola expresión pueden omitir la palabra clave return; se devuelve el valor de la expresión y se infiere su tipo.
let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)Variable de closure con tipo anotado
Cuando almacena un closure sin llamarlo inmediatamente, anote el tipo del closure para que Swift pueda inferir el cuerpo.
let transform: (String) -> Int = { $0.count }
print(transform("swift"))Cuándo debe añadir una anotación
Si el contexto circundante no proporciona información de tipo, Swift no puede inferir los parámetros del closure y debe anotarlos.
let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))Comprobación rápida
Pruebe la inferencia de closures.
Resumen
Los closures infieren los tipos de sus parámetros y del valor devuelto a partir de contextos como map, filter o una variable con tipo. Use las formas abreviadas $0/$1 cuando los tipos se infieran y añada anotaciones explícitas cuando no haya contexto disponible.
let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)Preguntas frecuentes
¿La lección «Inferencia en cierres» es gratis?
Sí — el texto completo de «Inferencia en cierres» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Inferencia en cierres»?
Comprenda la inferencia de parámetros y valores devueltos en los cierres. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Inferencia en cierres»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Cómo funciona la inferencia de tipos
- Cuándo añadir anotaciones explícitas
- Inferencia con literales
- Inferencia en cierres