Tracks
/
Swift
Swift
/
Lehrplan
/
inout-Parameter
in

inout-Parameter in Swift

1 Übung

Über inout-Parameter

Innerhalb des Funktionskörpers werden Parameter wie Konstanten behandelt, nicht wie Variablen. Der Versuch, den Wert eines Parameters zu ändern, führt zu einem Compilerfehler. Wenn eine Funktion den Wert eines Parameters ändern möchte, muss sie einen In-out-Parameter verwenden, um diese Veränderbarkeit ausdrücklich zu machen.

Um In-out-Parameter zu verwenden, muss man auf drei Dinge achten:

  1. In der Funktionsdefinition müssen In-out-Parameter ausdrücklich gekennzeichnet werden, indem du das Schlüsselwort inout zwischen dem : und dem Typnamen in der Typannotation des Parameters schreibst.
  2. Der Wert, der an den In-out-Parameter übergeben wird, muss als Variable deklariert sein, nicht als Konstante. Ebenso darf er kein Literal sein.
  3. Beim Aufruf der Funktion muss dem Variablennamen ein & vorangestellt werden, wodurch er ausdrücklich als veränderbar gekennzeichnet wird.

Wenn das geschieht, legt die Funktion eine interne Kopie des In-out-Parameters an, ändert sie wie im Funktionskörper beschrieben und kopiert den geänderten Wert anschließend wieder in die Variable zurück, die beim Aufruf übergeben wurde, sobald die Funktion zurückkehrt.

func updateVersion(_ record: inout (version: Int, title: String)) {
  record.version += 1
}

var dbRecord = (version: 2, title: "Exercism")
updateVersion(&dbRecord)

// dbRecord is now (3, "Exercism")
Bei In-out-Parametern gibt es ein paar zusätzliche Regeln, die du kennen solltest.

1. Innerhalb einer Funktion mit In-out-Parametern darfst du nicht auf die Variable verweisen, die als In-out-Parameter übergeben wurde.
2. Dieselbe Variable kann in derselben Funktion nicht als mehrere In-out-Parameter übergeben werden.
   Zum Beispiel löst `inoutFunc(&mutVar, &mutVar)` einen Compilerfehler aus.
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne inout-Parameter