0Pricing
Swift Academy · Leçon

Sortir de boucles imbriquées

Utilisez des étiquettes pour sortir de plusieurs niveaux de boucles.

Sortir de boucles imbriquées est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Le problème des boucles imbriquées

Un simple break dans une boucle imbriquée ne quitte que la boucle interne, laissant la boucle externe continuer à s'exécuter.

for i in 1...3 {
    for j in 1...3 {
        if j == 2 { break }
        print(i, j)
    }
}

break avec label résout le problème

Ajoutez un label à la boucle externe et utilisez break outer pour quitter les deux boucles à la fois.

outer: for i in 1...3 {
    for j in 1...3 {
        if i == 2 && j == 2 { break outer }
        print(i, j)
    }
}
print("escaped")

Rechercher dans une grille 2D

Un break avec label est idéal pour arrêter une recherche en 2D dès que la cible est trouvée.

let grid = [[1, 2, 3], [4, 5, 6]]
var position = (-1, -1)
find: for r in 0..<grid.count {
    for c in 0..<grid[r].count {
        if grid[r][c] == 5 {
            position = (r, c)
            break find
        }
    }
}
print(position)

Sans label : un indicateur

Une autre solution sans label consiste à utiliser un indicateur booléen, mais elle est plus verbeuse et plus sujette aux erreurs.

var stop = false
for i in 1...3 {
    for j in 1...3 {
        if i + j == 4 { stop = true; break }
        print(i, j)
    }
    if stop { break }
}

Les label sont plus clairs

Par rapport aux indicateurs, un break avec label exprime directement l'intention et évite les vérifications supplémentaires après la boucle interne.

outer: for i in 1...3 {
    for j in 1...3 {
        if i + j == 4 { break outer }
        print(i, j)
    }
}

Imbrication sur trois niveaux

Le mécanisme de label s'étend à trois niveaux ou plus ; ciblez la boucle que vous devez quitter.

top: for a in 1...2 {
    for b in 1...2 {
        for c in 1...2 {
            if c == 2 { break top }
            print(a, b, c)
        }
    }
}

continue avec label dans une imbrication

Utilisez continue label pour passer à l'itération suivante d'une boucle externe depuis un niveau d'imbrication profond.

rows: for r in 1...3 {
    for c in 1...3 {
        if c == 2 { continue rows }
        print(r, c)
    }
}

Combiner les deux

Vous pouvez mélanger break et continue avec label dans une même structure imbriquée pour un contrôle précis.

scan: for i in 1...3 {
    for j in 1...3 {
        if j == 1 { continue }
        if i == 3 { break scan }
        print(i, j)
    }
}

Performances d'une sortie anticipée

Quitter la boucle dès que la réponse est trouvée évite des itérations inutiles sur de grands ensembles de données.

let data = Array(1...100)
var firstBig = -1
loop: for chunk in stride(from: 0, to: data.count, by: 10) {
    for k in chunk..<min(chunk + 10, data.count) {
        if data[k] > 25 {
            firstBig = data[k]
            break loop
        }
    }
}
print(firstBig)

Renvoyer depuis une fonction

Dans une fonction, return est un autre moyen propre de quitter toutes les boucles à la fois.

func findPair(_ target: Int) -> (Int, Int)? {
    for i in 1...5 {
        for j in 1...5 {
            if i * j == target { return (i, j) }
        }
    }
    return nil
}
print(findPair(12) ?? (-1, -1))

Choisir une approche

Préférez un break avec label pour quitter sur place des boucles imbriquées, ou return lorsque vous êtes dans une fonction et souhaitez en sortir entièrement.

outer: for x in 1...3 {
    for y in 1...3 {
        if x * y >= 4 { break outer }
        print(x, y)
    }
}

Vérification rapide

Testez le contrôle des boucles imbriquées.

Récapitulatif

Un simple break ne quitte que la boucle la plus imbriquée. Attribuez un label à la boucle externe et utilisez break label pour sortir de tous les niveaux à la fois, ce qui est plus clair qu'un indicateur booléen. Dans une fonction, return permet également de tout quitter.

outer: for i in 1...3 {
    for j in 1...3 {
        if j == 2 { break outer }
        print(i, j)
    }
}

Questions Fréquemment Posées

La leçon « Sortir de boucles imbriquées » est-elle gratuite ?

Oui — le texte complet de « Sortir de boucles imbriquées » 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 « Sortir de boucles imbriquées » ?

Utilisez des étiquettes pour sortir de plusieurs niveaux de boucles. 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 4.

Combien de temps prend la leçon « Sortir de boucles imbriquées » ?

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. Bases de break et continue
  2. Instructions étiquetées
  3. Sortir de boucles imbriquées
  4. Contrôle des boucles dans le contexte de switch
← Retour à Swift Academy