Uscire dai cicli annidati
Usi le etichette per uscire da più livelli di cicli.
Uscire dai cicli annidati è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.
Il problema dei cicli annidati
Un semplice break all'interno di un ciclo annidato esce solo dal ciclo interno, lasciando in esecuzione quello esterno.
for i in 1...3 {
for j in 1...3 {
if j == 2 { break }
print(i, j)
}
}break con etichetta risolve il problema
Applichi un'etichetta al ciclo esterno e usi break outer per uscire contemporaneamente da entrambi i cicli.
outer: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 { break outer }
print(i, j)
}
}
print("escaped")Cercare in una griglia 2D
Un break con etichetta è perfetto per interrompere una ricerca 2D non appena viene trovato l'obiettivo.
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)Senza etichette: un flag
Un'alternativa senza etichette consiste nell'usare un flag booleano, ma è più prolissa e soggetta a errori.
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 }
}Le etichette sono più chiare
Rispetto ai flag, un break con etichetta esprime direttamente l'intento ed evita controlli aggiuntivi dopo il ciclo interno.
outer: for i in 1...3 {
for j in 1...3 {
if i + j == 4 { break outer }
print(i, j)
}
}Annidamento su tre livelli
Le etichette funzionano anche con tre o più livelli; indirizzi il ciclo dal quale deve uscire.
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 con etichetta nei cicli annidati
Usi continue label per passare all'iterazione successiva di un ciclo esterno da un punto profondamente annidato.
rows: for r in 1...3 {
for c in 1...3 {
if c == 2 { continue rows }
print(r, c)
}
}Combinare entrambi
È possibile combinare break e continue con etichetta nella stessa struttura annidata per ottenere un controllo preciso.
scan: for i in 1...3 {
for j in 1...3 {
if j == 1 { continue }
if i == 3 { break scan }
print(i, j)
}
}Prestazioni dell'uscita anticipata
Uscire non appena viene trovata la risposta evita iterazioni inutili su grandi insiemi di dati.
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)Restituire da una funzione
All'interno di una funzione, return è un altro modo chiaro per uscire contemporaneamente da tutti i cicli.
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))Scegliere un approccio
Preferisca un break con etichetta per uscire direttamente da cicli annidati, oppure return quando si trova all'interno di una funzione e desidera uscirne completamente.
outer: for x in 1...3 {
for y in 1...3 {
if x * y >= 4 { break outer }
print(x, y)
}
}Verifica rapida
Verifichi il controllo dei cicli annidati.
Riepilogo
Un semplice break esce solo dal ciclo più interno. Etichetti il ciclo esterno e usi break label per uscire contemporaneamente da tutti i livelli: è più chiaro di un flag booleano. All'interno di una funzione, anche return consente di uscire da tutto.
outer: for i in 1...3 {
for j in 1...3 {
if j == 2 { break outer }
print(i, j)
}
}Domande Frequenti
La lezione «Uscire dai cicli annidati» è gratuita?
Sì — il testo completo di «Uscire dai cicli annidati» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.
Cosa imparerò in «Uscire dai cicli annidati»?
Usi le etichette per uscire da più livelli di cicli. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Swift Academy?
Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Uscire dai cicli annidati»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Swift Academy?
Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Basi di break e continue
- Istruzioni con etichette
- Uscire dai cicli annidati
- Controllo dei cicli nel contesto switch