Inférence dans les fermetures
Comprenez l’inférence des paramètres et des valeurs de retour dans les fermetures.
Inférence dans les fermetures est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 4 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.
Les fermetures infèrent leurs types
Dans de nombreux contextes, une fermeture peut inférer le type de ses paramètres et celui de son retour à partir de son utilisation.
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled)Type de paramètre inféré
Lorsque vous transmettez une fermeture à map, le type des éléments indique à Swift ce que représente $0, ce qui vous permet d’omettre le type du paramètre.
let names = ["ada", "bob"]
let upper = names.map { $0.uppercased() }
print(upper)Type de retour inféré
Le corps de la fermeture détermine son type de retour. Renvoyer un Bool fait de la fermeture un prédicat.
let nums = [1, 2, 3, 4, 5]
let evens = nums.filter { $0 % 2 == 0 }
print(evens)Noms abrégés des arguments
$0, $1, etc. désignent les arguments de la fermeture selon leur position lorsque leurs types sont inférés.
let sums = zip([1, 2, 3], [10, 20, 30]).map { $0 + $1 }
print(Array(sums))Paramètres explicites si nécessaire
Vous pouvez toujours nommer les paramètres et annoter leurs types si cela améliore la clarté.
let nums = [3, 1, 2]
let sorted = nums.sorted { (a: Int, b: Int) -> Bool in
return a < b
}
print(sorted)Inférence à partir du contexte
Si vous affectez une fermeture à une variable typée, le type de la variable indique à la fermeture quelle est sa signature.
let add: (Int, Int) -> Int = { a, b in a + b }
print(add(2, 3))Fermeture finale
La syntaxe de la fermeture finale permet de conserver l’inférence tout en rendant les emplacements d’appel plus lisibles.
let result = [5, 3, 8, 1].sorted { $0 > $1 }
print(result)Inférence avec reduce
Dans reduce, les types de l’accumulateur et de l’élément sont inférés à partir de la valeur initiale et de la séquence.
let total = [1, 2, 3, 4].reduce(0) { acc, x in acc + x }
print(total)Renvoyer une valeur depuis une fermeture
Les fermetures constituées d’une seule expression peuvent omettre le mot-clé return : la valeur de l’expression est renvoyée et son type est inféré.
let lengths = ["hi", "hello", "hey"].map { $0.count }
print(lengths)Variable de fermeture avec annotation de type
Lorsqu’une fermeture est stockée sans être appelée immédiatement, annotez son type afin que Swift puisse inférer le corps.
let transform: (String) -> Int = { $0.count }
print(transform("swift"))Quand vous devez annoter
Si le contexte environnant ne fournit aucune information de type, Swift ne peut pas inférer les paramètres de la fermeture et vous devez les annoter.
let isPositive: (Int) -> Bool = { n in n > 0 }
print(isPositive(5), isPositive(-3))Vérification rapide
Testez l’inférence des fermetures.
Récapitulatif
Les fermetures infèrent les types de leurs paramètres et de leur retour à partir du contexte, par exemple avec map, filter ou une variable typée. Utilisez les notations abrégées $0/$1 lorsque les types sont inférés et annotez-les explicitement lorsqu’aucun contexte n’est disponible.
let f: (Int) -> Int = { $0 + 1 }
let xs = [1, 2, 3].map { $0 * 10 }
print(f(9), xs)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 « Inférence dans les fermetures » est-elle gratuite ?
Oui — le texte complet de « Inférence dans les fermetures » 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 « Inférence dans les fermetures » ?
Comprenez l’inférence des paramètres et des valeurs de retour dans les fermetures. 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 4 sur 4.
Combien de temps prend la leçon « Inférence dans les fermetures » ?
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 l’inférence des types
- Quand ajouter des annotations explicites
- Inférence avec les littéraux
- Inférence dans les fermetures