0Pricing
Swift Academy · Lektion

Memberwise-Initialisierer und benutzerdefinierte Initialisierer

Verstehen Sie automatisch generierte Memberwise-Initialisierer und schreiben Sie eigene Initialisierer.

Memberwise-Initialisierer und benutzerdefinierte Initialisierer ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

Swift-Structs erhalten automatisch einen *Memberwise-Initialisierer*, der alle gespeicherten Eigenschaften entgegennimmt. Sie können diesen jedoch mit einer eigenen Initialisierungslogik anpassen oder erweitern.

Automatisch generierter Memberwise-Initializer

```swift struct Point { var x: Double var y: Double } let p = Point(x: 3.0, y: 4.0) // auto-generated init ``` Sie müssen `init` nicht selbst schreiben – der Compiler stellt einen solchen Initializer bereit.

Benutzerdefinierten Initialisierer hinzufügen

```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) ```

Memberwise-Initialisierer beibehalten

Das Definieren eines benutzerdefinierten Initialisierers unterdrückt den automatisch generierten Memberwise-Initialisierer. Wenn Sie beide beibehalten möchten, platzieren Sie den benutzerdefinierten Initialisierer in einer 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 ```

Standardwerte für Properties

```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 ```

Initialisierer-Delegation mit 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) } } ```

Fehlschlagende Initialisierer

```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 ```

Initialisierer mit Validierung

```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-Initialisierer vs. Klassen-Initialisierer

Wichtige Unterschiede zu Klasseninitialisierern: • Structs können zur Delegation `self.init()` verwenden • Structs erben keine Initialisierer (kein `super.init()`) • Alle gespeicherten Properties müssen vor der Verwendung initialisiert sein • Keine Schlüsselwörter `required` oder `designated` / `convenience`

Vorschau auf init(from decoder:)

Structs, die `Decodable` implementieren, erhalten automatisch einen Initialisierer: ```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) ```

Schnelltest

Wo sollten Sie einen benutzerdefinierten Initialisierer platzieren, damit der automatisch generierte Memberwise-Initialisierer erhalten bleibt?

Zusammenfassung

Die wichtigsten Punkte: • Structs erhalten vom Compiler kostenlos einen Memberwise-Initialisierer • Benutzerdefinierte Initialisierer im Struct-Rumpf unterdrücken den Memberwise-Initialisierer • Platzieren Sie benutzerdefinierte Initialisierer in Extensions, um beide beizubehalten • Verwenden Sie `self.init()`, um zwischen Initialisierern zu delegieren • Fehlschlagende Initialisierer geben bei ungültigen Eingaben `nil` zurück Als Nächstes: gespeicherte Properties und Property-Observer.

Häufig gestellte Fragen

Ist die Lektion „Memberwise-Initialisierer und benutzerdefinierte Initialisierer“ kostenlos?

Ja — der vollständige Text von „Memberwise-Initialisierer und benutzerdefinierte Initialisierer“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Memberwise-Initialisierer und benutzerdefinierte Initialisierer“?

Verstehen Sie automatisch generierte Memberwise-Initialisierer und schreiben Sie eigene Initialisierer. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Memberwise-Initialisierer und benutzerdefinierte Initialisierer“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Memberwise-Initialisierer und benutzerdefinierte Initialisierer
  2. Gespeicherte Eigenschaften und Eigenschaftsbeobachter
  3. Berechnete Eigenschaften in Structs
  4. Mutierende Methoden und Copy-on-Write-Semantik
← Zurück zu Swift Academy