0Pricing
Swift Academy · Leçon

Itérateurs personnalisés et conseils de performance

Implémentez des itérateurs et des séquences personnalisés tout en les gardant efficaces : parcours en une seule passe, absence d’allocations superflues et utilisation de vues lazy.

Itérateurs personnalisés et conseils de performance est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. 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 3 leçons au total.

Itérateurs personnalisés : notions de base

Créez votre propre IteratorProtocol et votre propre séquence. Les itérateurs sont généralement à parcours unique et doivent renvoyer nil à la fin.

Exemple d’IteratorProtocol

Implémentez next() pour produire un élément par appel et faire avancer l’état ; renvoyez nil pour terminer.

struct CountdownIterator: IteratorProtocol {
    var current: Int
    mutating func next() -> Int? {
        guard current >= 0 else { return nil }
        defer { current -= 1 }   // advance state
        return current
    }
}

var it = CountdownIterator(current: 3)
while let n = it.next() { print(n, terminator: " ") }  // 3 2 1 0
print("")

Enveloppe de séquence

Une séquence fournit makeIterator(). Vous pouvez alors utiliser for-in, la transformation, le filtrage, etc.

struct Countdown: Sequence {
    let start: Int
    func makeIterator() -> CountdownIterator {
        CountdownIterator(current: start)
    }
}

for n in Countdown(start: 5) {
    print(n, terminator: " ")   // 5 4 3 2 1 0
}
print("")

Raccourci AnyIterator

AnyIterator/AnySequence permettent de créer rapidement des itérateurs avec une fermeture — pratique pour les générateurs légers.

// Build an iterator from a closure
var i = 1
let anyIt = AnyIterator<Int> {
    guard i <= 3 else { return nil }
    defer { i += 1 }
    return i * 10
}
let numbers = AnySequence(anyIt)
for x in numbers { print(x, terminator: " ") } // 10 20 30
print("")

Mode différé pour économiser du travail

Préférez le mode différé lorsqu’une seule partie d’une chaîne de traitement est nécessaire ; cela économise des allocations et du travail.

let big = Array(1...10_000)
// Eager: builds two intermediate arrays
let eager = big.map { $0 * 2 }.filter { $0 % 3 == 0 }
// Lazy: no temporaries; work is done during collection
let lazyView = big.lazy.map { $0 * 2 }.filter { $0 % 3 == 0 }
let result = Array(lazyView.prefix(5)) // only first 5 actually computed
print(result)

Conseils de performance

Conseils :

  • Gardez les itérateurs simples : faites avancer l’état et renvoyez nil à la fin.
  • Utilisez le mode différé pour éviter les tableaux intermédiaires.
  • Réservez la capacité pour les résultats lorsque vous connaissez leur taille (res.reserveCapacity(n)).
  • Préférez les algorithmes de collection lorsque vous avez besoin de parcours multiples ou d’indices.

Règle des itérateurs

Vérification rapide : que doit faire next() à la fin de l’itération ?

Récapitulatif

Récapitulatif : écrivez un IteratorProtocol minimal, enveloppez-le dans une séquence et gardez les chaînes de traitement efficaces grâce au mode différé et à la préallocation lorsque cela est possible.

Questions Fréquemment Posées

La leçon « Itérateurs personnalisés et conseils de performance » est-elle gratuite ?

Oui — le texte complet de « Itérateurs personnalisés et conseils de performance » 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 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Itérateurs personnalisés et conseils de performance » ?

Implémentez des itérateurs et des séquences personnalisés tout en les gardant efficaces : parcours en une seule passe, absence d’allocations superflues et utilisation de vues lazy. 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 3 sur 3.

Combien de temps prend la leçon « Itérateurs personnalisés et conseils de performance » ?

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. Hiérarchies Sequence/Collection
  2. Map/Filter/Reduce et séquences lazy
  3. Itérateurs personnalisés et conseils de performance
← Retour à Swift Academy