Menu
Coddy logo textTech

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 imienia

Instrukcja 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.

challenge icon

Wyzwanie

Łatwy
Napisz 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
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Swift