Wychodzenie ze zagnieżdżonych pętli
Używanie etykiet do opuszczania wielu poziomów pętli.
Wychodzenie ze zagnieżdżonych pętli to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
Problem zagnieżdżonej pętli
Zwykłe break wewnątrz zagnieżdżonej pętli kończy tylko pętlę wewnętrzną, pozostawiając uruchomioną pętlę zewnętrzną.
for i in 1...3 {
for j in 1...3 {
if j == 2 { break }
print(i, j)
}
}break z etykietą rozwiązuje problem
Należy przypisać etykietę pętli zewnętrznej i użyć break outer, aby jednocześnie zakończyć obie pętle.
outer: for i in 1...3 {
for j in 1...3 {
if i == 2 && j == 2 { break outer }
print(i, j)
}
}
print("escaped")Wyszukiwanie w siatce 2D
break z etykietą doskonale nadaje się do zatrzymania wyszukiwania w siatce 2D natychmiast po znalezieniu celu.
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)Bez etykiet: flaga
Alternatywą bez etykiet jest użycie flagi logicznej, ale rozwiązanie to jest bardziej rozwlekłe i podatne na błędy.
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 }
}Etykiety są czytelniejsze
W porównaniu z flagami break z etykietą bezpośrednio wyraża intencję i eliminuje dodatkowe sprawdzanie po zakończeniu pętli wewnętrznej.
outer: for i in 1...3 {
for j in 1...3 {
if i + j == 4 { break outer }
print(i, j)
}
}Potrójne zagnieżdżenie
Etykiety można stosować na trzech lub większej liczbie poziomów; należy wskazać dowolną pętlę, którą trzeba zakończyć.
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 z etykietą w zagnieżdżeniu
Należy użyć continue label, aby z głębi zagnieżdżenia przejść do następnej iteracji zewnętrznej pętli.
rows: for r in 1...3 {
for c in 1...3 {
if c == 2 { continue rows }
print(r, c)
}
}Łączenie obu sposobów
W tej samej zagnieżdżonej strukturze można połączyć break i continue z etykietami, uzyskując precyzyjną kontrolę.
scan: for i in 1...3 {
for j in 1...3 {
if j == 1 { continue }
if i == 3 { break scan }
print(i, j)
}
}Wydajność wczesnego wyjścia
Wyjście natychmiast po znalezieniu odpowiedzi pozwala uniknąć niepotrzebnych iteracji na dużych zbiorach danych.
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)Powrót z funkcji
Wewnątrz funkcji return jest innym przejrzystym sposobem na jednoczesne zakończenie wszystkich pętli.
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))Wybór podejścia
Do zakończenia zagnieżdżonych pętli w miejscu należy preferować break z etykietą, a return stosować wewnątrz funkcji, gdy należy całkowicie z niej wyjść.
outer: for x in 1...3 {
for y in 1...3 {
if x * y >= 4 { break outer }
print(x, y)
}
}Szybkie sprawdzenie
Sprawdź sterowanie zagnieżdżonymi pętlami.
Podsumowanie
Zwykłe break kończy tylko najbardziej wewnętrzną pętlę. Należy oznaczyć pętlę zewnętrzną i użyć break label, aby jednocześnie wyjść ze wszystkich poziomów; jest to czytelniejsze niż flaga logiczna. Wewnątrz funkcji również return kończy całe wykonanie.
outer: for i in 1...3 {
for j in 1...3 {
if j == 2 { break outer }
print(i, j)
}
}Ucz się Swift dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 122
- Lekcje
- 409
Często zadawane pytania
Czy lekcja „Wychodzenie ze zagnieżdżonych pętli” jest bezpłatna?
Tak — pełny tekst „Wychodzenie ze zagnieżdżonych pętli” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wychodzenie ze zagnieżdżonych pętli”?
Używanie etykiet do opuszczania wielu poziomów pętli. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Wychodzenie ze zagnieżdżonych pętli”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy break i continue
- Instrukcje z etykietami
- Wychodzenie ze zagnieżdżonych pętli
- Sterowanie pętlą w kontekście switch