Grunderna i closures och infångning
Förstå closure-syntax, förkortade argument, trailing closure, infångningslistor samt escaping och non-escaping.
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()) // 2Capture-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.
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
- Grunderna i closures och infångning
- Infångningslistor — weak/unowned och infångning av värden
- Escaping jämfört med non-escaping och autoclosures