Nil-Coalescing-Operator
Teil des Abschnitts Grundlagen der Swift-Journey von Coddy — Lektion 14 von 86.
Manchmal möchten Sie einfach einen Standardwert bereitstellen, wenn ein Optional nil ist, ohne mehrere Codezeilen schreiben zu müssen. Swifts Nil-Coalescing-Operator (??) macht genau das – er entpackt ein Optional, wenn es einen Wert hat, oder gibt einen Standardwert zurück, wenn es nil ist.
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestDa nickname den Wert nil hat, gibt der Operator stattdessen "Guest" zurück. Wenn nickname einen Wert hätte, würde dieser verwendet werden.
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderDer Nil-Coalescing-Operator ist perfekt für Einzeiler, bei denen Sie einen Ersatzwert benötigen. Er ist sauberer, als eine if let-Anweisung zu schreiben, wenn Sie einfach nil durch einen Standardwert ersetzen möchten. Das Ergebnis ist immer ein Nicht-Optional-Wert, sodass Sie ihn direkt ohne weiteres Entpacken verwenden können.
Aufgabe
EinfachSchreiben Sie eine Funktion getDisplayName, die einen optionalen username und einen defaultName entgegennimmt und dann den entsprechenden Anzeigenamen unter Verwendung des Nil-Coalescing-Operators zurückgibt.
Wenn der Benutzername leer ist (dargestellt durch einen leeren String ""), behandeln Sie ihn als nil und geben Sie den Standardnamen zurück. Andernfalls geben Sie den Benutzernamen zurück.
Parameter:
username(String): Der Name des Benutzers (ein leerer String repräsentiert nil)defaultName(String): Der Fallback-Name, der verwendet werden soll
Rückgabewert: Der Benutzername, wenn er nicht leer ist, andernfalls der defaultName.
Hinweis: Konvertieren Sie den Benutzernamen innerhalb Ihrer Funktion in ein Optional — wenn er leer ist, machen Sie ihn zu nil. Verwenden Sie dann ??, um den Fallback bereitzustellen.
Spickzettel
Der Nil-Coalescing-Operator (??) entpackt ein Optional, wenn es einen Wert hat, oder gibt einen Standardwert zurück, wenn es nil ist:
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestWenn das Optional einen Wert hat, wird stattdessen dieser Wert verwendet:
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderDas Ergebnis ist immer ein Nicht-Optional-Wert, was es für einfache Fallback-Szenarien sauberer macht als if let.
Probier es selbst
func getDisplayName(username: String, defaultName: String) -> String {
// Hier Code schreiben
}
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