Körordning för flera defers
Därför körs uppskjuten kod i omvänd ordning
Körordning för flera defers är en gratis lektion i Zig Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Zig Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Zig Academy innehåller totalt 4 lektioner.
Mer än en defer
Ett scope kan innehålla flera defer-satser. När scopet avslutas måste Zig avgöra i vilken ordning de ska köras.
De körs i omvänd ordning
Flera defers körs i omvänd ordning: den sista du skrev körs först och den första du skrev körs sist.
defer one();
defer two();Sist in, först ut
Detta är klassiskt LIFO-beteende, precis som för en stack. Varje defer läggs på, och vid avveckling tas de bort i omvänd ordning.
Ett litet exempel
Här körs två defers efter arbetet. Utskriften blir two then one, eftersom den senare defer avvecklas före den tidigare.
defer print("one");
defer print("two");
work();Varför omvänd ordning är logiskt
Resurser är vanligtvis beroende av tidigare resurser. Omvänd ordning innebär att du frigör den nyaste först, så att inget frigörs medan det fortfarande används.
Speglad hämtning
Öppna A och öppna sedan B. Omvända defers stänger B och sedan A, vilket perfekt speglar hur du satte upp dem.
a.open(); defer a.close();
b.open(); defer b.close();Fångas när den schemaläggs
Varje defer kommer ihåg sin kod i rätt ordning, även om körningen väntar. Ordningen fastställs i det ögonblick varje defer nås.
Hoppas över om raden aldrig nås
Om scopet avslutas innan en defer-rad nås har den defer aldrig schemalagts och körs därför inte alls.
if (early) return;
defer late();Separata stackar per scope
Varje scope har sin egen defer-stack. Inre scope avvecklar sina defers innan det yttre scopet avvecklar sina.
Förutsägbar avveckling
När du känner till regeln om omvänd ordning kan du resonera exakt om städningen, så att din teardown-sekvens aldrig blir en överraskning.
En användbar mental modell
Föreställ dig att du staplar tallrikar: du lägger dem uppifrån och ned, men måste ta bort dem uppifrån och ta bort den sista först.
Snabb kontroll
Två defers, först ett och sedan två. I vilken ordning körs de?
Sammanfattning
Flera defers avvecklas i omvänd ordning, som en stack, så att den nyaste resursen frigörs först och städningen speglar uppsättningen. 🔁
Lär dig Zig med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Körordning för flera defers” gratis?
Ja – hela texten till ”Körordning för flera defers” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Zig Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Zig Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Körordning för flera defers”?
Därför körs uppskjuten kod i omvänd ordning Ni övar på Zig Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Zig Academy?
Du behöver inga förkunskaper. Utbildningen i Zig Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Körordning för flera defers”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Zig Academy-lektionen?
Ja. Varje Zig Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Vad defer garanterar
- Körordning för flera defers
- defer jämfört med errdefer i praktiken
- Koppla ihop open med close