Guard let
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 13 z 86.
Podczas gdy if let rozpakowuje opcjonalną wartość i wykonuje kod, gdy wartość istnieje, guard let działa odwrotnie. Kończy działanie wcześniej, gdy brakuje wartości. Jest to szczególnie przydatne wewnątrz funkcji, w których chcesz najpierw obsłużyć „zły” przypadek i zachować przejrzystość głównej logiki.
func greet(name: String?) {
guard let unwrappedName = name else {
print("No name provided")
return
}
print("Hello, \(unwrappedName)!")
}
greet(name: "Taylor") // Cześć, Taylor!
greet(name: nil) // Nie podano imieniaInstrukcja guard let sprawdza, czy name ma wartość. Jeśli jej nie ma, wykonywany jest blok else, a funkcja kończy działanie za pomocą return. Jeśli opcjonalna wartość zawiera wartość, zostaje ona rozpakowana do unwrappedName. I tu tkwi kluczowa różnica w porównaniu z if let: rozpakowana zmienna pozostaje dostępna przez resztę funkcji, a nie tylko wewnątrz bloku.
Ten wzorzec „wczesnego wyjścia” sprawia, że kod jest czytelny, ponieważ obsługuje przypadki błędów na początku, dzięki czemu główna logika nie jest zagnieżdżona w wielu instrukcjach if.
Wyzwanie
ŁatwyNapisz funkcję validateAge, która przyjmuje opcjonalny parametr age i używa guard let, aby bezpiecznie go rozpakować.
Jeśli wiek ma wartość nil, zwróć "Invalid age". W przeciwnym razie zwróć "Age: [value]", gdzie [value] to rozpakowany wiek.
Parametry:
age(Int?): opcjonalna liczba całkowita reprezentująca wiek danej osoby
Zwraca: Ciąg znaków: "Invalid age", jeśli wartość wejściowa to nil, albo "Age: [value]" z rozpakowaną wartością.
Przykład: Jeśli age ma wartość 25, zwróć "Age: 25". Jeśli age ma wartość nil, zwróć "Invalid age".
Spróbuj swoich sił
func validateAge(age: Int) -> String {
// Wpisz kod tutaj
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift