Kapitel 2: Grundlagen / 2.9 Optionals / 2.9.5 Unwrapping durch Optionales Binding

Da das erzwungene Unwrapping oft nur dann Sinn macht, wenn es innerhalb einer if-Abfrage geschieht, gibt es mit dem Optionalen Binding eine Kurzform davon:

var alterString = "32"

var alterOptional = alterString.toInt()

if var alter = alterOptional {
    
    // Hier können Sie mit dem Alter weiter arbeiten.
    
    println("Die Benutzerin ist \(alter) Jahre alt.")
    
} else {
    
    // Die Benutzerin hat kein korrektes Alter eingegeben.
    // Sie könnten jetzt zum Beispiel einen Hinweis an
    // die Benutzerin ausgeben, das zu korrigieren.
}

Das Optionale Binding geschieht hier in der Zeile mit dem if: Statt eines Vergleichs steht hier eine Deklaration mit anschließender Zuweisung.

Der rechte Wert, in unserem Beispiel alterOptional, muss ein Optional sein. Ist er das nicht, führt das zu der Fehlermeldung: „Bound value in a conditional binding must be of Optional type.“ Probieren Sie das Beispiel doch mal im Playground aus und setzen Sie dann ein Ausrufungszeichen hinter das alterOptional, dann bekommen Sie diesen Fehler.

Der linke Wert der Zuweisung, in unserem Beispiel die Variable alter, steht im Erfolgsfall, wenn alterOptional also nicht nil enthält, im ersten Codeblock zur Verfügung und kann direkt genutzt werden. Im Beispiel wird damit eine Ausgabe gemacht.

Im Zweiten Codeblock, dem else-Fall, steht der linke Wert der Zuweisung nicht zur Verfügung. Hierhinein wird verzweigt, wenn alterOptional gleich nil ist. Die Variable alter ist hier gar nicht erst deklariert; greifen Sie darauf zu, erhalten Sie den Fehler: „Use of unresolved identifier alter“.

Diese etwas unkonventionelle Form der Syntax (Sprachgestaltung), dass statt eines Vergleichs eine Zuweisung verwendet wird, stellt aber keine allgemeine Spracheigenschaft von Swift dar, sondern ist tatsächlich Optionals im Rahmen des Optionalen Bindings vorbehalten.

Statt des var können Sie beim Optionalen Binding auch ein let verwenden, dann stünde Ihnen der gebundene Wert als Konstante zur Verfügung. Tatsächlich ist es sogar üblicher, beim Optionalen Binding Konstanten zu verwenden.

Das Konzept des Bindings wird Ihnen auch später noch mehrfach begegnen. Es zieht sich durch viele wichtige Bereiche der Apple-Programmierung. Ganz allgemein gesprochen haben zwei Variablen oder Programmstrukturen, die aneinander gebunden sind, die Eigenschaft, dass wenn Sie an der einen drehen, sich auch die andere verändert. Auch und gerade dann, wenn beide sich an sehr unterschiedlichen Orten innerhalb ihres Programms befinden.

Kapitel 2.9.5: Unwrapping durch Optionales Binding

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.