Swift Academy · Lektion

Grunderna i closures och infångning

Förstå closure-syntax, förkortade argument, trailing closure, infångningslistor samt escaping och non-escaping.

Lektion 1 av 38 steg

Grunderna i closures och infångning är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 3. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Swift Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Swift Academy innehåller totalt 3 lektioner.

Introduktion

Den här lektionen introducerar closures: självständiga kodblock som du kan skicka vidare. Utforska syntax, förkortade argument, trailing closure, capture-listor samt escaping och non-escaping.

Closure-syntax

Closures liknar lätta funktioner. Syntax: { (params) -> Return in ... }.

let greet = { (name: String) -> String in
    return "Hello, \\(name)"
}
print(greet("Ada"))

Förkortade argument

Swift tillhandahåller förkortade argument som $0 och $1 för att förenkla closures.

let doubled = [1,2,3].map { $0 * 2 }
print(doubled)

Trailing closure

Om en closure är det sista argumentet kan du skriva den utanför parenteserna: en trailing closure.

func operate(_ x: Int, _ y: Int, _ f: (Int,Int)->Int) -> Int {
    return f(x,y)
}
let sum = operate(2,3) { $0 + $1 }
print(sum)

Grunderna i capture

Closures fångar värden från den omgivande kontexten, till exempel en löpande räknare.

func makeCounter() -> () -> Int {
    var count = 0
    return {
        count += 1
        return count
    }
}
let counter = makeCounter()
print(counter())  // 1
print(counter())  // 2

Capture-listor och escaping

Använd capture-listor som [weak self] för att undvika retain-cykler. Closures är non-escaping som standard. Markera dem med @escaping om de lagras efter anropet.

class Greeter {
    var name = "Ada"
    lazy var greet: () -> Void = { [weak self] in
        print("Hello", self?.name ?? "?")
    }
}
let g = Greeter()
g.greet()

Fråga om capture-listor

Snabbkontroll: Vilken roll har en capture-lista?

Sammanfattning

Sammanfattning: Closures är infogade kodblock. Lär dig syntax, förkortade argument och trailing closure, och styr capture med listor. Escaping-closures överlever anropet, medan non-escaping är standard.

Gratis att börja

Lär dig Swift 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
122
Lektioner
409

Vanliga frågor

Är lektionen ”Grunderna i closures och infångning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Grunderna i closures och infångning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Swift Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Grunderna i closures och infångning”?

Förstå closure-syntax, förkortade argument, trailing closure, infångningslistor samt escaping och non-escaping. Ni övar på Swift 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 Swift Academy?

Du behöver inga förkunskaper. Utbildningen i Swift 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 1 av 3.

Hur lång tid tar lektionen ”Grunderna i closures och infångning”?

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 Swift Academy-lektionen?

Ja. Varje Swift 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

  1. Grunderna i closures och infångning
  2. Infångningslistor — weak/unowned och infångning av värden
  3. Escaping jämfört med non-escaping och autoclosures
← Tillbaka till Swift Academy