Guard Let
Teil des Abschnitts Grundlagen der Swift-Journey von Coddy. Lektion 13 von 86.
Während if let ein Optional entpackt und Code ausführt, wenn ein Wert vorhanden ist, verfolgt guard let den umgekehrten Ansatz. Es beendet die Ausführung frühzeitig, wenn ein Wert fehlt. Das ist besonders nützlich innerhalb von Funktionen, wenn du zuerst den „schlechten“ Fall behandeln und die Hauptlogik übersichtlich halten möchtest.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // Hallo, Taylor!
greet(name: nil) // Kein Name angegebenDie Anweisung guard let prüft, ob name einen Wert enthält. Wenn dies nicht der Fall ist, wird der else-Block ausgeführt und die Funktion mit return beendet. Wenn das optionale Element einen Wert enthält, wird dieser in unwrappedName entpackt. Und hier liegt der wesentliche Unterschied zu if let: Die entpackte Variable bleibt für den Rest der Funktion verfügbar, nicht nur innerhalb eines Blocks.
Dieses Muster des „frühen Verlassens“ hält deinen Code lesbar, indem es Fehlerfälle von vornherein behandelt, sodass die Hauptlogik nicht innerhalb mehrerer if-Anweisungen verschachtelt ist.
Aufgabe
EinfachSchreibe eine Funktion validateAge, die einen optionalen Parameter age entgegennimmt und guard let verwendet, um ihn sicher auszupacken.
Wenn das Alter nil ist, gib "Invalid age" zurück. Andernfalls gib "Age: [value]" zurück, wobei [value] das ausgepackte Alter ist.
Parameter:
age(Int?): Eine optionale Ganzzahl, die das Alter einer Person darstellt
Rückgabewert: Eine Zeichenkette: entweder "Invalid age", wenn die Eingabe nil ist, oder "Age: [value]" mit dem ausgepackten Wert.
Beispiel: Wenn age 25 ist, gib "Age: 25" zurück. Wenn age nil ist, gib "Invalid age" zurück.
Probier es selbst
func validateAge(age: Int) -> String {
// Schreibe hier den Code
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorZusammengesetzte ZuweisungRückblick – Einfache MathematikVergleichsoperatoren7Grundlagen der Ein- und Ausgabe
Print-FunktionString-InterpolationReadLine-EingabeTypkonvertierungWiederholung – Bis 120Wiederholung – Wahr oder falsch10Funktionen
Eine Funktion deklarierenParameter und ArgumenteRückgabewerteArgumentbezeichnungenWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardwerte13Über Sequenzen iterieren
Über Elemente iterierenDie Enumerate-MethodeÜber Strings iterieren Teil 1Über Strings iterieren Teil 22Variablen
let vs. varTypannotationenZahlenStringBooleanNamenskonventionenRückblick – Variablen initialisieren5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Zusammenfassung – Einfache LogikLogische Operatoren Teil 3Ternärer Operator8Rechner zum Teilen der Rechnung
WillkommensnachrichtEingaben erfassen11FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion14Arrays – Fortgeschritten
Array-Slicing Teil 1Array-Slicing Teil 2SequenzoperatorenDie Contains-Methode3Optionals
Was sind Optionals?Entpacken mit If LetGuard LetNil-Coalescing-OperatorZusammenfassung – Sicheres Entpacken6Entscheidungen treffen
If-AnweisungIf - ElseRückblick – Einfacher TaschenrechnerSwitch-AnweisungSwitch mit Bereichen9Schleifen
For-In-SchleifeWhile-SchleifeRepeat-While-SchleifeBreakContinueZusammenfassung – FakultätBereiche in SchleifenVerschachtelte SchleifeZusammenfassung – Dynamische EingabeÜbe selbstständig: Swift-Playground