Zig Academy · Lekcja

Kolejność wykonywania wielu defer

Dowiedz się, dlaczego odroczony kod wykonuje się w odwrotnej kolejności.

Lekcja 2 z 413 kroki

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ę. 🔁

Bezpłatny start

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

  1. Gwarancje defer
  2. Kolejność wykonywania wielu defer
  3. defer a errdefer w praktyce
  4. Łączenie open z close
← Powrót do Zig Academy