0Pricing
Swift Academy · Lektion

In-Out-Parameter und mehrere Rückgabewerte

Verändern Sie Argumente mit inout und geben Sie mehrere Werte über Tupel zurück.

In-Out-Parameter und mehrere Rückgabewerte ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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-Funktionen arbeiten normalerweise mit Kopien von Werten. Mit `inout`-Parametern kann eine Funktion die Variable des Aufrufers direkt mutieren. Mit Tupeln können Funktionen mehrere Werte auf einmal zurückgeben.

Das Schlüsselwort inout

Kennzeichnen Sie einen Parameter mit `inout`, um das Original zu mutieren: ```swift func doubleInPlace(_ value: inout Int) { value *= 2 } var x = 5 doubleInPlace(&x) print(x) // 10 ``` Das Präfix `&` am Aufrufort signalisiert, dass die Variable mutiert werden kann.

inout mit Structs

```swift struct Point { var x: Double; var y: Double } func translate(_ p: inout Point, dx: Double, dy: Double) { p.x += dx p.y += dy } var origin = Point(x: 0, y: 0) translate(&origin, dx: 3.0, dy: 4.0) // origin is now (3.0, 4.0) ```

Einschränkungen von inout

• Konstanten (`let`) können nicht als `inout` übergeben werden • Literale können nicht als `inout` übergeben werden • Subskripte und berechnete Eigenschaften können als `inout` verwendet werden, wenn sie über Setter verfügen ```swift let c = 5 doubleInPlace(&c) // ❌ cannot pass let as inout ```

Mehrere Werte mit Tupeln zurückgeben

Geben Sie mehrere Werte zurück, indem Sie sie in ein Tupel einschließen: ```swift func minMax(of array: [Int]) -> (min: Int, max: Int) { (array.min()!, array.max()!) } let result = minMax(of: [3, 1, 7, 2]) print(result.min, result.max) // 1 7 ```

Benannte und unbenannte Tupelelemente

Benannte Elemente machen Tupel selbsterklärend: ```swift let named: (width: Int, height: Int) = (1920, 1080) print(named.width) // 1920 let unnamed = (1920, 1080) print(unnamed.0) // 1920 ``` Bevorzugen Sie Namen für Tupel, die von Funktionen zurückgegeben werden.

Tupel-Rückgabewerte destrukturieren

Entpacken Sie einen Tupel-Rückgabewert in mehrere Variablen: ```swift let (minimum, maximum) = minMax(of: [5, 3, 8]) print(minimum) // 3 print(maximum) // 8 ``` Verwenden Sie `_`, um nicht benötigte Elemente zu verwerfen: `let (minimum, _) = minMax(of: arr)`.

Optionale Tupel-Rückgabewerte

Geben Sie in Fehlerfällen nil zurück: ```swift func parse(_ s: String) -> (Int, Int)? { let parts = s.split(separator: ",") guard parts.count == 2, let a = Int(parts[0]), let b = Int(parts[1]) else { return nil } return (a, b) } ```

swap mit inout

Der klassische Tausch mit inout: ```swift func swap(_ a: inout T, _ b: inout T) { let temp = a a = b b = temp } var m = 1, n = 2 swap(&m, &n) print(m, n) // 2 1 ``` Die Swift-Standardbibliothek stellt `swap(_:_:)` bereits bereit – Sie müssen keine eigene Implementierung schreiben.

Wann Sie inout statt einer Rückgabe verwenden

Geben Sie vorzugsweise einen neuen Wert zurück, statt per inout zu mutieren: ```swift // Prefer: func normalised(_ v: SIMD3) -> SIMD3 { v / v.magnitude } // Use inout only when mutation is expected API contract, e.g. algorithms on large arrays func sort(_ arr: inout [Int]) { arr.sort() } ```

Kurzer Test

Welches Präfix ist an der Aufrufstelle erforderlich, wenn eine Variable an einen `inout`-Parameter übergeben wird?

Zusammenfassung

Wichtige Erkenntnisse: • `inout` ermöglicht es Funktionen, Variablen des Aufrufers zu verändern; übergeben Sie sie mit `&` • Als `inout` können keine `let`-Konstanten oder Literale übergeben werden • Tupel geben mehrere Werte übersichtlich zurück; benennen Sie die Elemente für mehr Klarheit • Tupel destrukturieren: `let (a, b) = f()` • Geben Sie vorzugsweise neue Werte zurück; verwenden Sie `inout` nur, wenn Mutation Teil des API-Vertrags ist Als Nächstes: Funktionen als Werte erster Klasse.

Häufig gestellte Fragen

Ist die Lektion „In-Out-Parameter und mehrere Rückgabewerte“ kostenlos?

Ja — der vollständige Text von „In-Out-Parameter und mehrere Rückgabewerte“ 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 „In-Out-Parameter und mehrere Rückgabewerte“?

Verändern Sie Argumente mit inout und geben Sie mehrere Werte über Tupel zurück. 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 3 von 4.

Wie lange dauert die Lektion „In-Out-Parameter und mehrere Rückgabewerte“?

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. Argumentbezeichnungen und Parameternamen
  2. Standard- und variadische Parameter
  3. In-Out-Parameter und mehrere Rückgabewerte
  4. Funktionen als erstklassige Werte
← Zurück zu Swift Academy