map et compactMap
Transformez les éléments et supprimez les valeurs nil.
map et compactMap 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.
Qu’est-ce que map ?
map est une fonction d’ordre supérieur : elle prend une fermeture et l’applique à chaque élément d’une séquence, en renvoyant un nouveau tableau contenant les résultats transformés.
- La collection d’origine n’est jamais modifiée
- Le nombre de résultats est toujours égal au nombre d’éléments d’entrée
- Le type des éléments peut changer (par exemple
Int→String)
Un map simple
Pour doubler chaque nombre d’un tableau :
let numbers = [1, 2, 3, 4]
let doubled = numbers.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]Modifier le type des éléments
map peut transformer des valeurs Int en valeurs String :
let ids = [10, 20, 30]
let labels = ids.map { "ID-\($0)" }
print(labels) // ["ID-10", "ID-20", "ID-30"]map avec une fonction nommée
Vous pouvez transmettre n’importe quelle fonction ayant une signature correspondante, et pas seulement une fermeture finale :
let words = ["swift", "map"]
let upper = words.map { $0.uppercased() }
print(upper) // ["SWIFT", "MAP"]Le problème que map ne peut pas résoudre
map conserve chaque élément. Si votre transformation renvoie une valeur optionnelle (elle peut échouer), vous obtenez un tableau de valeurs optionnelles comme [Int?] — rempli d’emplacements nil que vous devez filtrer ensuite.
C’est précisément ce que résout compactMap.
Voici compactMap
compactMap transforme chaque élément et supprime tout résultat égal à nil, en renvoyant un tableau dépourvu de valeurs optionnelles :
let raw = ["1", "2", "x", "4"]
let nums = raw.compactMap { Int($0) }
print(nums) // [1, 2, 4] -- "x" was droppedmap et compactMap côte à côte
La différence tient au fait que les résultats égaux à nil sont conservés ou non :
let raw = ["1", "x", "3"]
print(raw.map { Int($0) }) // [Optional(1), nil, Optional(3)]
print(raw.compactMap { Int($0) }) // [1, 3]Désemballer les valeurs optionnelles d’une collection
compactMap est la méthode idiomatique pour retirer les valeurs nil d’un tableau de valeurs optionnelles :
let maybe: [Int?] = [1, nil, 3, nil, 5]
let clean = maybe.compactMap { $0 }
print(clean) // [1, 3, 5]Analyser des données avec compactMap
Une utilisation courante dans un cas réel : n’analyser que les lignes d’entrée valides :
let lines = ["42", "", "hello", "7"]
let values = lines.compactMap { Int($0) }
print(values) // [42, 7]
print(values.reduce(0, +)) // 49Combiner map et compactMap
Vous pouvez les enchaîner : utilisez map pour structurer les données, puis compactMap pour ne conserver que les réussites :
let scores = ["90", "85", "n/a", "70"]
let passed = scores
.compactMap { Int($0) }
.map { $0 >= 80 ? "pass" : "fail" }
print(passed) // ["pass", "pass", "fail"]compactMap sur des chaînes de propriétés optionnelles
Il fonctionne également très bien avec l’accès à des propriétés optionnelles :
struct User { let name: String? }
let users = [User(name: "Ann"), User(name: nil), User(name: "Bo")]
let names = users.compactMap { $0.name }
print(names) // ["Ann", "Bo"]Vérification rapide
Quelle fonction transforme les éléments et supprime les résultats égaux à nil en une seule étape ?
Récapitulatif
Vous avez découvert les deux fonctions essentielles de transformation :
map— transforme chaque élément ; le nombre de résultats est égal au nombre d’éléments d’entréecompactMap— transforme les éléments et supprimenil, ce qui est très utile pour l’analyse et le déballage des valeurs optionnelles- Les deux renvoient de nouveaux tableaux et ne modifient jamais la source
- Enchaînez-les pour structurer puis filtrer les données proprement
Ensuite : le filtrage avec des prédicats.
Questions Fréquemment Posées
La leçon « map et compactMap » est-elle gratuite ?
Oui — le texte complet de « map et compactMap » 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 « map et compactMap » ?
Transformez les éléments et supprimez les valeurs nil. 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 « map et compactMap » ?
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