Kolejność wykonywania wielu defer
Dowiedz się, dlaczego odroczony kod wykonuje się w odwrotnej kolejności.
Kolejność wykonywania wielu defer to bezpłatna lekcja Zig Academy na CoddyKit. To lekcja 2 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 Zig Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Zig Academy zawiera 4 lekcji w sumie.
Więcej niż jedno defer
Jeden zakres może zawierać kilka instrukcji defer. Gdy zakres się kończy, Zig musi zdecydować, w jakiej kolejności je wykonać.
Wykonują się w odwrotnej kolejności
Wiele instrukcji defer uruchamia się w odwrotnej kolejności: ostatnia zapisana wykona się pierwsza, a pierwsza — ostatnia.
defer one();
defer two();Ostatni wchodzi, pierwszy wychodzi
To klasyczne zachowanie LIFO, takie jak w stosie. Każdy defer jest odkładany na stos, a podczas rozwijania zdejmowany w odwrotnej kolejności.
Mały przykład
W tym przykładzie dwa defer wykonują się po zakończeniu pracy. Wynik to two then one, ponieważ późniejszy defer jest rozwijany przed wcześniejszym.
defer print("one");
defer print("two");
work();Dlaczego odwrotna kolejność ma sens
Zasoby zwykle zależą od wcześniej uzyskanych zasobów. Odwrotna kolejność oznacza, że najpierw zwalniany jest najnowszy zasób, więc nic nie zostaje zwolnione, gdy jest jeszcze używane.
Odwzorowanie uzyskiwania zasobów
Otwieramy A, a następnie B. Odroczone operacje zamkną najpierw B, a potem A, dokładnie odzwierciedlając kolejność ich otwierania.
a.open(); defer a.close();
b.open(); defer b.close();Zapamiętywane w chwili zaplanowania
Każdy defer zapamiętuje swój kod w odpowiedniej kolejności, choć wykonanie następuje później. Kolejność zostaje ustalona w chwili dotarcia do danego defer.
Pomijane, jeśli nigdy do nich nie dojdzie
Jeśli zakres zakończy się, zanim wykonanie dotrze do wiersza defer, ten defer nie został zaplanowany, więc w ogóle się nie wykona.
if (early) return;
defer late();Stosy osobne dla zakresów
Każdy zakres ma własny stos defer. Zakresy wewnętrzne rozwijają swoje defer, zanim zakres zewnętrzny rozwinie własne.
Przewidywalne zwalnianie zasobów
Znajomość zasady odwrotnej kolejności pozwala precyzyjnie rozumować o sprzątaniu, dzięki czemu sekwencja zwalniania zasobów nigdy nie zaskakuje.
Przydatny model mentalny
Proszę wyobrazić sobie układanie talerzy: dokłada się je od dołu ku górze, ale trzeba je zdejmować od góry, zaczynając od ostatniego.
Szybkie sprawdzenie
Są dwa defer, najpierw jeden, potem dwa. W jakiej kolejności się wykonają?
Podsumowanie
Wiele instrukcji defer rozwija się w odwrotnej kolejności, tak jak stos, więc najnowszy zasób jest zwalniany jako pierwszy, a sprzątanie odzwierciedla konfigurację. 🔁
Ucz się Zig 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
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Kolejność wykonywania wielu defer” jest bezpłatna?
Tak — pełny tekst „Kolejność wykonywania wielu 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 Zig Academy, przejdź na CoddyKit PRO. Kurs Zig Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Kolejność wykonywania wielu defer”?
Dowiedz się, dlaczego odroczony kod wykonuje się w odwrotnej kolejności. Ćwiczysz Zig 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ąć Zig Academy?
Nie wymagamy żadnego doświadczenia. Zig 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 2 z 4.
Ile czasu zajmuje lekcja „Kolejność wykonywania wielu 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 Zig Academy?
Tak. Każda lekcja Zig 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
- Gwarancje defer
- Kolejność wykonywania wielu defer
- defer a errdefer w praktyce
- Łączenie open z close