Operator nil-coalescing
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 14 z 86.
Czasami chcesz po prostu podać wartość domyślną, gdy opcjonalna wartość to nil, bez pisania wielu linii kodu. Operator koalescencji nil w języku Swift (??) robi dokładnie to. Rozpakowuje opcjonalną wartość, jeśli jest dostępna, albo zwraca wartość domyślną, jeśli wynosi nil.
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestPonieważ nickname ma wartość nil, operator zwraca "Guest". Gdyby nickname miało jakąś wartość, zostałaby ona użyta.
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderOperator koalescencji nil idealnie sprawdza się w jednolinijkowych wyrażeniach, gdy potrzebujesz wartości zastępczej. Jest czytelniejszy niż zapis instrukcji if let, gdy po prostu chcesz zastąpić nil wartością domyślną. Gdy wartość domyślna nie jest opcjonalna, wynik również nie jest opcjonalny, więc możesz użyć go bezpośrednio, bez dalszego rozpakowywania.
Wyzwanie
ŁatwyNapisz funkcję getDisplayName, która przyjmuje opcjonalne username oraz defaultName, a następnie zwraca odpowiednią nazwę wyświetlaną, używając operatora łączenia z nil.
Jeśli nazwa użytkownika jest pusta (reprezentuje ją pusty ciąg znaków ""), potraktuj ją jako nil i zwróć domyślną nazwę. W przeciwnym razie zwróć nazwę użytkownika.
Parametry:
username(String): Nazwa użytkownika (pusty ciąg znaków reprezentuje nil)defaultName(String): Zapasowa nazwa, której należy użyć
Zwraca: Nazwę użytkownika, jeśli nie jest pusta, a w przeciwnym razie defaultName.
Podpowiedź: Wewnątrz funkcji zapisz nazwę użytkownika w zmiennej typu String?, a jeśli nazwa użytkownika jest równa "", ustaw tę zmienną na nil za pomocą prostego if. Następnie użyj ??, aby podać wartość zapasową.
Spróbuj swoich sił
func getDisplayName(username: String, defaultName: String) -> 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