Swift Academy · Lekcja

Jak działa defer

Wykonywanie kodu przy opuszczaniu zakresu, niezależnie od ścieżki wykonania.

Lekcja 1 z 413 kroki

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()
Bezpłatny start

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

  1. Jak działa defer
  2. Kolejność wielu bloków defer
  3. defer do zwalniania zasobów
  4. defer z błędami i wczesnymi zwrotami
← Powrót do Swift Academy