Swift Academy · Lektion

Medlemsvisa initierare och anpassade initierare

Förstå automatiskt genererade medlemsvisa initierare och skriv anpassade initierare.

Lektion 1 av 412 steg

Medlemsvisa initierare och anpassade initierare är en gratis lektion i Swift Academy på CoddyKit. Detta är lektion 1 av 4. 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 4 lektioner.

Välkommen

Swift-structar får en kostnadsfri *memberwise initializer* som tar emot alla lagrade egenskaper. Det går dock att anpassa eller utöka denna med egen initieringslogik.

Automatiskt genererad memberwise-initialiserare

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` Ni behöver inte skriva `init` själva – kompilatorn tillhandahåller en.

Lägga till en egen init

```swift struct Circle { var radius: Double var area: Double init(radius: Double) { self.radius = radius self.area = .pi * radius * radius } } let c = Circle(radius: 5.0) ```

Bevara memberwise-initieraren

Att definiera en egen initierare undertrycker den automatiskt genererade memberwise-initieraren. Om du vill behålla båda placerar du den egna initieraren i en extension: ```swift struct Rect { var width: Double; var height: Double } extension Rect { init(square side: Double) { self.init(width: side, height: side) } } // Both Rect(width:height:) and Rect(square:) available ```

Standardvärden för egenskaper

```swift struct Config { var debug = false var maxRetries = 3 var timeout: TimeInterval = 30 } let c1 = Config() // all defaults let c2 = Config(debug: true) // memberwise with overrides ```

Initierardelegering med self.init

```swift struct Temperature { var celsius: Double init(celsius: Double) { self.celsius = celsius } init(fahrenheit: Double) { self.init(celsius: (fahrenheit - 32) / 1.8) } init(kelvin: Double) { self.init(celsius: kelvin - 273.15) } } ```

Initierare som kan misslyckas

```swift struct Percentage { let value: Double init?(_ value: Double) { guard (0...100).contains(value) else { return nil } self.value = value } } let p = Percentage(105) // nil ```

Init med validering

```swift struct Username { let value: String init?(_ raw: String) { let trimmed = raw.trimmingCharacters(in: .whitespaces) guard trimmed.count >= 3 else { return nil } self.value = trimmed } } ```

Struct-initierare jämfört med klassinitierare

Viktiga skillnader jämfört med klassinitierare: • Structar kan delegera med `self.init()` • Structar ärver inte initierare (ingen `super.init()`) • Alla lagrade egenskaper måste initieras innan de används • Inga nyckelord som `required` eller `designated` / `convenience`

Förhandsvisning av init(from decoder:)

Structar som överensstämmer med `Decodable` får en automatisk initierare: ```swift struct User: Decodable { let name: String let age: Int } // Auto-synthesised init(from:) for JSON decoding let user = try JSONDecoder().decode(User.self, from: json) ```

Snabb kontroll

Var ska du placera en egen initierare för att bevara den automatiskt genererade memberwise-initieraren?

Sammanfattning

Viktiga lärdomar: • Structar får en kostnadsfri memberwise-initierare från kompilatorn • Egna initierare i structens kropp undertrycker memberwise-initieraren • Placera egna initierare i extensions för att behålla båda • Använd `self.init()` för att delegera mellan initierare • Initierare som kan misslyckas returnerar `nil` vid ogiltig indata Nästa: lagrade egenskaper och egenskapsobservatörer.
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 ”Medlemsvisa initierare och anpassade initierare” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Swift Academy, inklusive ”Medlemsvisa initierare och anpassade initierare”, 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 4 lektioner.

Vad lär jag mig i ”Medlemsvisa initierare och anpassade initierare”?

Förstå automatiskt genererade medlemsvisa initierare och skriv anpassade initierare. 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 4.

Hur lång tid tar lektionen ”Medlemsvisa initierare och anpassade initierare”?

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. Medlemsvisa initierare och anpassade initierare
  2. Lagrade egenskaper och egenskapsobservatörer
  3. Beräknade egenskaper i strukturer
  4. Muterande metoder och copy-on-write-semantik
← Tillbaka till Swift Academy