Jak działa defer
Wykonywanie kodu przy opuszczaniu zakresu, niezależnie od ścieżki wykonania.
Jak działa defer to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 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.
Działanie defer
Blok defer planuje wykonanie kodu w chwili, gdy bieżący zakres ma zostać opuszczony, niezależnie od sposobu wyjścia.
func demo() {
defer { print("cleanup") }
print("work")
}
demo()Wykonanie przy opuszczaniu zakresu
Odroczony kod wykonuje się po zakończeniu pozostałej części zakresu, tuż przed opuszczeniem go przez sterowanie.
func greet() {
defer { print("goodbye") }
print("hello")
}
greet()Odroczenie po zwykłym przebiegu
Nawet przy wielu instrukcjach ciało defer wykonuje się jako ostatnie.
func process() {
defer { print("3 deferred") }
print("1 start")
print("2 middle")
}
process()defer wewnątrz pętli
Instrukcja defer umieszczona w ciele pętli wykonuje się na końcu każdej iteracji.
for i in 1...3 {
defer { print("end of iteration", i) }
print("start of iteration", i)
}defer wewnątrz instrukcji if
Zakresem może być dowolny blok. Instrukcja defer umieszczona w if wykonuje się po zakończeniu tego bloku if.
func check(_ flag: Bool) {
if flag {
defer { print("leaving if block") }
print("inside if")
}
print("after if")
}
check(true)Przechwytywanie bieżących wartości
Odroczony blok przechwytuje zmienne przez referencję, dlatego widzi ich wartości z chwili wykonania.
func counterDemo() {
var count = 0
defer { print("final count:", count) }
count = 5
}
counterDemo()defer nie opóźnia pracy
defer nie wykonuje się asynchronicznie. Wykonuje się synchronicznie przy opuszczaniu zakresu, zanim funkcja zwróci wynik do wywołującego.
func order() {
defer { print("B") }
print("A")
}
order()
print("C")Typowe zastosowanie: parowanie konfiguracji i sprzątania
Umieszczaj sprzątanie bezpośrednio obok konfiguracji, aby oba elementy pozostawały razem wizualnie i logicznie.
func session() {
print("open session")
defer { print("close session") }
print("do work")
}
session()defer w bloku do
Instrukcja defer umieszczona w bloku do wykonuje się po opuszczeniu tego bloku.
func run() {
do {
defer { print("do block cleanup") }
print("inside do")
}
print("after do")
}
run()Wiele instrukcji w defer
Blok defer może zawierać kilka instrukcji; wszystkie wykonują się razem przy opuszczaniu zakresu.
func multi() {
defer {
print("step 1 of cleanup")
print("step 2 of cleanup")
}
print("main work")
}
multi()Dlaczego używać defer
defer gwarantuje wykonanie sprzątania niezależnie od sposobu zakończenia zakresu, zmniejszając ryzyko pominięcia go na którejś ze ścieżek.
func guaranteed() {
defer { print("always runs") }
print("body")
}
guaranteed()Szybkie sprawdzenie
Sprawdź moment wykonania defer.
Podsumowanie
defer planuje wykonanie kodu na końcu bieżącego zakresu, niezależnie od sposobu jego opuszczenia. Wykonuje się synchronicznie, jako ostatni element zakresu, i doskonale nadaje się do umieszczania sprzątania obok konfiguracji.
func demo() {
defer { print("last") }
print("first")
}
demo()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 „Jak działa defer” jest bezpłatna?
Tak — pełny tekst „Jak działa defer” 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 „Jak działa defer”?
Wykonywanie kodu przy opuszczaniu zakresu, niezależnie od ścieżki wykonania. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Jak działa defer”?
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
- Jak działa defer
- Kolejność wielu bloków defer
- defer do zwalniania zasobów
- defer z błędami i wczesnymi zwrotami