0Pricing
Swift Academy · Leçon

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 dropped

map 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, +))  // 49

Combiner 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ée
  • compactMap — transforme les éléments et supprime nil, 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

  1. map et compactMap
  2. filter et prédicats
  3. reduce et reduce(into:)
  4. flatMap et chaînage
← Retour à Swift Academy