Swift Academy · Lektion

Sådan fungerer defer

Kør kode, når et scope afsluttes, uanset hvilken vej udførelsen tog.

Lektion 1 af 413 trin

Sådan fungerer defer er en gratis Swift Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Swift Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Swift Academy-kurset indeholder 4 lektioner i alt.

Hvad defer gør

En defer-blok planlægger kode til kørsel, når det aktuelle omfang er ved at blive afsluttet, uanset hvordan det afsluttes.

func demo() {
    defer { print("cleanup") }
    print("work")
}
demo()

Køres, når omfanget afsluttes

Den udskudte kode køres, efter resten af omfanget er færdigt, lige før styringen forlader det.

func greet() {
    defer { print("goodbye") }
    print("hello")
}
greet()

Udskudt kørsel efter normalt forløb

Selv med flere sætninger køres defer-blokken til sidst.

func process() {
    defer { print("3 deferred") }
    print("1 start")
    print("2 middle")
}
process()

defer inde i en løkke

En defer-blok inde i løkkens krop køres i slutningen af hver gentagelse.

for i in 1...3 {
    defer { print("end of iteration", i) }
    print("start of iteration", i)
}

defer inde i en if-blok

Området kan være en hvilken som helst blok. En defer-blok i en if-blok køres, når den pågældende if-blok afsluttes.

func check(_ flag: Bool) {
    if flag {
        defer { print("leaving if block") }
        print("inside if")
    }
    print("after if")
}
check(true)

Indfangning af aktuelle værdier

Den udskudte blok fanger variabler ved reference, så den ser deres værdier på det tidspunkt, hvor den køres.

func counterDemo() {
    var count = 0
    defer { print("final count:", count) }
    count = 5
}
counterDemo()

defer udsætter ikke arbejdet

defer køres ikke asynkront. Det køres synkront, når området afsluttes, før funktionen returnerer til den kaldende kode.

func order() {
    defer { print("B") }
    print("A")
}
order()
print("C")

Almindelig anvendelse: opsætning og nedlukning

Placér nedlukningen lige ved siden af opsætningen, så de to dele forbliver visuelt og logisk samlet.

func session() {
    print("open session")
    defer { print("close session") }
    print("do work")
}
session()

defer i en do-blok

En defer-blok inde i en do-blok køres, når blokken afsluttes.

func run() {
    do {
        defer { print("do block cleanup") }
        print("inside do")
    }
    print("after do")
}
run()

Flere sætninger i defer

En defer-blok kan indeholde flere sætninger; alle køres samlet, når området afsluttes.

func multi() {
    defer {
        print("step 1 of cleanup")
        print("step 2 of cleanup")
    }
    print("main work")
}
multi()

Hvorfor bruge defer

defer garanterer, at oprydningen sker, uanset hvordan området afsluttes, og mindsker risikoen for, at du glemmer den på en af afslutningsstierne.

func guaranteed() {
    defer { print("always runs") }
    print("body")
}
guaranteed()

Hurtig test

Test tidspunktet for defer.

Opsummering

defer planlægger kode til at blive kørt i slutningen af det aktuelle område, uanset hvordan det afsluttes. Det køres synkront som det sidste i området og er ideelt til at holde nedlukningen tæt på opsætningen.

func demo() {
    defer { print("last") }
    print("first")
}
demo()
Gratis at komme i gang

Lær Swift med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
122
Lektioner
409

Ofte stillede spørgsmål

Er lektionen “Sådan fungerer defer” gratis?

Ja — alle 3 lektioner i læringssporet Swift Academy, inklusive “Sådan fungerer defer”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Swift Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Sådan fungerer defer”?

Kør kode, når et scope afsluttes, uanset hvilken vej udførelsen tog. Du øver dig i Swift Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Swift Academy?

Der kræves ingen tidligere erfaring. Swift Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Sådan fungerer defer”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Swift Academy-lektion?

Ja. Alle Swift Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Sådan fungerer defer
  2. Rækkefølgen af flere defer-blokke
  3. defer til oprydning af ressourcer
  4. defer med fejl og tidlige returneringer
← Tilbage til Swift Academy