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 existiert, verfolgt guard let den entgegengesetzten Ansatz – es bricht frühzeitig ab, wenn ein Wert fehlt. Dies ist besonders nützlich innerhalb von Funktionen, in denen man den „Fehlerfall“ zuerst behandeln und die Hauptlogik übersichtlich halten möchte.
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 guard let-Anweisung prüft, ob name einen Wert hat. Wenn dies nicht der Fall ist, wird der else-Block ausgeführt und die Funktion mit return beendet. Wenn das Optional einen Wert enthält, wird dieser in unwrappedName entpackt — und hier liegt der entscheidende Unterschied zu if let: Die entpackte Variable bleibt für den Rest der Funktion verfügbar, nicht nur innerhalb eines Blocks.
Dieses „Early Exit“-Muster hält Ihren Code lesbar, indem Fehlerfälle vorab behandelt werden, sodass die Hauptlogik nicht in mehreren if-Anweisungen verschachtelt ist.
Aufgabe
EinfachSchreiben Sie eine Funktion validateAge, die einen optionalen Parameter age entgegennimmt und guard let verwendet, um diesen sicher zu entpacken.
Wenn das Alter nil ist, geben Sie "Invalid age" zurück. Andernfalls geben Sie "Age: [value]" zurück, wobei [value] das entpackte Alter ist.
Parameter:
age(Int?): Eine optionale Ganzzahl, die das Alter einer Person darstellt
Rückgabewert: Ein String — entweder "Invalid age", wenn die Eingabe nil ist, oder "Age: [value]" mit dem entpackten Wert.
Beispiel: Wenn age den Wert 25 hat, geben Sie "Age: 25" zurück. Wenn age nil ist, geben Sie "Invalid age" zurück.
Spickzettel
Verwenden Sie guard let, um ein Optional zu entpacken und frühzeitig abzubrechen, wenn ein Wert fehlt:
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}Die guard let-Anweisung prüft, ob das Optional einen Wert hat. Falls nicht, wird der else-Block ausgeführt und die Funktion mit return verlassen. Wenn das Optional einen Wert enthält, wird dieser entpackt und bleibt für den Rest des Funktionsbereichs verfügbar.
Dieses „Early Exit“-Muster behandelt Fehlerfälle vorab, wodurch die Hauptlogik sauber und nicht eingerückt bleibt.
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 ZuweisungWiederholung - Einfache MathematikVergleichsoperatoren7Grundlagen der Ein- und Ausgabe
Print-FunktionString-InterpolationReadLine-EingabeTypumwandlungWiederholung - Bis 120Wiederholung - Wahr oder Falsch10Funktionen
Eine Funktion deklarierenParameter und ArgumenteRückgabewerteArgument-LabelsWiederholung - Sigma-FunktionWiederholung - ValidierungsfunktionStandardwerte13Iterieren über Sequenzen
Iterieren über ElementeDie enumerate-MethodeIterieren über Strings Teil 1Iterieren über Strings Teil 22Variablen
Let vs. VarTyp-AnnotationenZahlenStringsBooleansBenennungskonventionenZusammenfassung – Variablen initialisieren5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung – Einfache LogikLogische Operatoren Teil 3Ternärer Operator8Rechnungs-Splitter
WillkommensnachrichtEingabe abfragen14Arrays für Fortgeschrittene
Array Slicing Teil 1Array Slicing Teil 2Sequenz-OperatorenDie Contains-Methode3Optionals
Was sind OptionalsUnwrapping mit If LetGuard LetNil-Coalescing-OperatorZusammenfassung – Sicheres Unwrapping6Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher TaschenrechnerSwitch-AnweisungSwitch mit Wertebereichen9Schleifen
For-In-SchleifeWhile-SchleifeRepeat-While-SchleifeBreakContinueWiederholung – FakultätBereiche in SchleifenVerschachtelte SchleifeWiederholung – Dynamische Eingabe