Fonctionnement de defer
Exécutez du code à la sortie d’une portée, quel que soit le chemin suivi.
Fonctionnement de defer est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.
Ce que fait defer
Un bloc defer programme l'exécution d'un code lorsque la portée actuelle est sur le point de se terminer, quelle que soit la manière dont elle se termine.
func demo() {
defer { print("cleanup") }
print("work")
}
demo()S'exécute à la sortie de la portée
Le code différé s'exécute après la fin du reste de la portée, juste avant que le contrôle ne la quitte.
func greet() {
defer { print("goodbye") }
print("hello")
}
greet()Différé après le déroulement normal
Même avec plusieurs instructions, le corps de defer s'exécute en dernier.
func process() {
defer { print("3 deferred") }
print("1 start")
print("2 middle")
}
process()defer à l'intérieur d'une boucle
Un bloc defer placé dans le corps d'une boucle s'exécute à la fin de chaque itération.
for i in 1...3 {
defer { print("end of iteration", i) }
print("start of iteration", i)
}defer dans une instruction if
La portée peut être n'importe quel bloc. Un defer dans un if s'exécute lorsque ce bloc if se termine.
func check(_ flag: Bool) {
if flag {
defer { print("leaving if block") }
print("inside if")
}
print("after if")
}
check(true)Capturer les valeurs actuelles
Le bloc différé capture les variables par référence : il voit donc leurs values au moment où il s'exécute.
func counterDemo() {
var count = 0
defer { print("final count:", count) }
count = 5
}
counterDemo()defer ne diffère pas l'exécution
defer ne s'exécute pas de manière asynchrone. Il s'exécute de manière synchrone à la sortie de la portée, avant que la fonction ne renvoie le contrôle à son appelant.
func order() {
defer { print("B") }
print("A")
}
order()
print("C")Usage courant : associer l'initialisation et le nettoyage
Placez le nettoyage juste à côté de l'initialisation afin que les deux restent visuellement et logiquement associés.
func session() {
print("open session")
defer { print("close session") }
print("do work")
}
session()defer dans un bloc do
Un defer placé dans un bloc do s'exécute lorsque ce bloc se termine.
func run() {
do {
defer { print("do block cleanup") }
print("inside do")
}
print("after do")
}
run()Plusieurs instructions dans defer
Un bloc defer peut contenir plusieurs instructions ; elles s'exécutent toutes ensemble à la sortie de la portée.
func multi() {
defer {
print("step 1 of cleanup")
print("step 2 of cleanup")
}
print("main work")
}
multi()Pourquoi utiliser defer
defer garantit que le nettoyage est effectué quelle que soit la manière dont la portée se termine, ce qui réduit le risque de l'oublier dans certains chemins d'exécution.
func guaranteed() {
defer { print("always runs") }
print("body")
}
guaranteed()Vérification rapide
Vérifiez le moment d'exécution de defer.
Récapitulatif
defer planifie l'exécution du code à la fin de la portée actuelle, quelle que soit la manière dont celle-ci se termine. Il s'exécute de manière synchrone, en dernier dans la portée, et convient parfaitement pour garder le nettoyage à côté de l'initialisation.
func demo() {
defer { print("last") }
print("first")
}
demo()Apprends Swift avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 122
- Leçons
- 409
Questions Fréquemment Posées
La leçon « Fonctionnement de defer » est-elle gratuite ?
Oui — le texte complet de « Fonctionnement de defer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Fonctionnement de defer » ?
Exécutez du code à la sortie d’une portée, quel que soit le chemin suivi. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Swift Academy ?
Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Fonctionnement de defer » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?
Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctionnement de defer
- Ordre de plusieurs blocs defer
- defer pour libérer les ressources
- defer avec les erreurs et les retours anticipés