flatMap et chaînage
Aplatissez les collections imbriquées et enchaînez les transformations.
flatMap et chaînage 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 deux visages de flatMap
flatMap appliqué à une séquence aplatit un niveau d’imbrication. Il applique une fermeture qui renvoie une séquence pour chaque élément, puis concatène toutes ces séquences en un seul tableau plat.
Aplatir des tableaux imbriqués
Transformer un tableau de tableaux en un seul tableau :
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 }
print(flat) // [1, 2, 3, 4, 5]flatMap qui produit des séquences
Chaque élément peut être étendu en plusieurs éléments :
let nums = [1, 2, 3]
let expanded = nums.flatMap { [$0, $0 * 10] }
print(expanded) // [1, 10, 2, 20, 3, 30]Associer toutes les combinaisons
flatMap est pratique pour les produits cartésiens :
let suits = ["Hearts", "Spades"]
let ranks = ["A", "K"]
let deck = suits.flatMap { suit in ranks.map { "\($0) of \(suit)" } }
print(deck) // ["A of Hearts", "K of Hearts", "A of Spades", "K of Spades"]flatMap et compactMap
Historiquement, flatMap déballait également les valeurs optionnelles, mais ce rôle est passé à compactMap. Aujourd’hui :
flatMap— aplatit les séquences imbriquéescompactMap— supprimenildes résultats optionnels
Aplatir des mots en caractères
Décomposer chaque chaîne en ses caractères :
let words = ["hi", "yo"]
let chars = words.flatMap { Array($0) }
print(chars) // ["h", "i", "y", "o"]Joindre des sous-résultats
Rassembler les éléments provenant d’objets de modèle imbriqués :
struct Team { let members: [String] }
let teams = [Team(members: ["Ann", "Bo"]), Team(members: ["Cy"])]
let all = teams.flatMap { $0.members }
print(all) // ["Ann", "Bo", "Cy"]Enchaîner des transformations
La véritable puissance vient de l’enchaînement : map, filter, flatMap et reduce se lisent de haut en bas comme une chaîne de traitement des données. Chaque étape produit une nouvelle séquence pour la suivante.
Une chaîne de traitement complète
Filtrer, aplatir, transformer, puis additionner :
let groups = [[1, 2, 3], [4, 5], [6]]
let result = groups
.flatMap { $0 }
.filter { $0 % 2 == 0 }
.map { $0 * $0 }
.reduce(0, +)
print(result) // 4 + 16 + 36 = 56flatMap puis compactMap
Aplatissez d’abord, puis ne conservez que les valeurs analysables :
let rows = [["1", "x"], ["3", "4"]]
let nums = rows
.flatMap { $0 }
.compactMap { Int($0) }
print(nums) // [1, 3, 4]Garder les enchaînements lisibles
Placez chaque étape sur sa propre ligne et nommez les résultats intermédiaires lorsqu’un enchaînement devient long. La lisibilité est plus importante que le fait de tout faire tenir dans une seule expression.
let names = ["ann", "BO", "cy"]
let titled = names
.map { $0.lowercased() }
.map { $0.capitalized }
.sorted()
print(titled) // ["Ann", "Bo", "Cy"]Vérification rapide
Que renvoie [[1, 2], [3]].flatMap { $0 } ?
Récapitulatif
Vous avez appris à aplatir et à enchaîner :
flatMapaplatit un niveau de séquences imbriquées- Utilisez
compactMap(et non flatMap) pour supprimer les valeurs optionnelles - Enchaînez
filter/map/flatMap/reducedans des chaînes de traitement lisibles - Une étape par ligne permet de garder les longs enchaînements clairs
Cours terminé ! Ensuite : les séquences différées.
Questions Fréquemment Posées
La leçon « flatMap et chaînage » est-elle gratuite ?
Oui — le texte complet de « flatMap et chaînage » 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 « flatMap et chaînage » ?
Aplatissez les collections imbriquées et enchaînez les transformations. 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 « flatMap et chaînage » ?
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
- map et compactMap
- filter et prédicats
- reduce et reduce(into:)
- flatMap et chaînage