Cómo funciona defer
Ejecute código al salir de un ámbito, independientemente de la ruta seguida.
Cómo funciona defer es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 1 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.
Qué hace defer
Un bloque defer programa la ejecución de código cuando el ámbito actual está a punto de terminar, sin importar cómo termine.
func demo() {
defer { print("cleanup") }
print("work")
}
demo()Se ejecuta al salir del ámbito
El código diferido se ejecuta después de que termine el resto del ámbito, justo antes de que el control salga de él.
func greet() {
defer { print("goodbye") }
print("hello")
}
greet()Código diferido tras el flujo normal
Incluso con varias instrucciones, el cuerpo de defer se ejecuta en último lugar.
func process() {
defer { print("3 deferred") }
print("1 start")
print("2 middle")
}
process()defer dentro de un bucle
Un defer dentro del cuerpo de un bucle se ejecuta al final de cada iteración.
for i in 1...3 {
defer { print("end of iteration", i) }
print("start of iteration", i)
}defer dentro de un if
El ámbito puede ser cualquier bloque. Un defer en un if se ejecuta cuando termina ese bloque if.
func check(_ flag: Bool) {
if flag {
defer { print("leaving if block") }
print("inside if")
}
print("after if")
}
check(true)Captura de los valores actuales
El bloque diferido captura las variables por referencia, por lo que ve sus valores en el momento de ejecutarse.
func counterDemo() {
var count = 0
defer { print("final count:", count) }
count = 5
}
counterDemo()defer no retrasa la ejecución
defer no se ejecuta de forma asíncrona. Se ejecuta sincrónicamente al salir del ámbito, antes de que la función devuelva el control a quien la llamó.
func order() {
defer { print("B") }
print("A")
}
order()
print("C")Uso habitual: emparejar configuración y limpieza
Coloque la limpieza justo al lado de la configuración para que ambas permanezcan juntas visual y lógicamente.
func session() {
print("open session")
defer { print("close session") }
print("do work")
}
session()defer en un bloque do
Un defer dentro de un bloque do se ejecuta cuando se sale de ese bloque.
func run() {
do {
defer { print("do block cleanup") }
print("inside do")
}
print("after do")
}
run()Varias instrucciones en defer
Un bloque defer puede contener varias instrucciones; todas se ejecutan juntas al salir del ámbito.
func multi() {
defer {
print("step 1 of cleanup")
print("step 2 of cleanup")
}
print("main work")
}
multi()Por qué usar defer
defer garantiza que la limpieza se realice independientemente de cómo termine el ámbito, lo que reduce la posibilidad de olvidarla en alguna ruta.
func guaranteed() {
defer { print("always runs") }
print("body")
}
guaranteed()Comprobación rápida
Pruebe el momento de ejecución de defer.
Resumen
defer programa código para ejecutarse al final del ámbito actual, independientemente de cómo termine. Se ejecuta sincrónicamente, como última acción del ámbito, y es ideal para mantener la limpieza junto a la configuración.
func demo() {
defer { print("last") }
print("first")
}
demo()Preguntas frecuentes
¿La lección «Cómo funciona defer» es gratis?
Sí — el texto completo de «Cómo funciona defer» 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 «Cómo funciona defer»?
Ejecute código al salir de un ámbito, independientemente de la ruta seguida. 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 1 de 4.
¿Cuánto tiempo toma la lección «Cómo funciona defer»?
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 defer
- Orden de varios bloques defer
- defer para liberar recursos
- defer con errores y retornos anticipados