Menu
Coddy logo textTech

Optionale Suche

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 13 von 56.

Dictionary-Subskripte geben immer ein Optional zurück: den Wert, wenn der Schlüssel vorhanden ist, und nil, wenn er nicht vorhanden ist. Swift zwingt dich, beide Fälle zu behandeln.

let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p)                          // Optional(1)

Drei idiomatische Möglichkeiten, mit dem Optional umzugehen. Wähle diejenige, die zur Situation passt.

1. if let: Behandle beide Zweige ausdrücklich:

if let p = prices["apple"] {
    print("apple costs \(p)")
} else {
    print("unknown")
}

2. nil-coalescing ??: inline einen Fallback bereitstellen:

let p = prices["olive"] ?? 0    // 0

3. Subscript mit default: identisches Ergebnis, aber der Standardwert bleibt auch erhalten, wenn du in diesen Schlüssel zurückschreibst:

var counts = ["a": 2]
counts["b", default: 0] += 1   // counts == ["a": 2, "b": 1]
challenge icon

Aufgabe

Einfach

Das Wörterbuch prices ist vorgegeben. Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von Elementen, die der Benutzer kaufen möchte.

Schlage jedes Element in der Eingabereihenfolge in prices nach. Gib für jedes Element eine Zeile aus:

  • <item> @ <price>, wenn das Element im Wörterbuch enthalten ist
  • andernfalls <item> not sold

Nachdem jedes Element aufgelistet wurde, gib eine letzte Zeile aus: Total: <sum>. Behandle fehlende Elemente mithilfe des Nil-Koaleszenzoperators als Kosten von 0.

Für die Eingabe apple,bread,olive,milk lautet die Ausgabe:

apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8

Probier es selbst

let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")

// TODO: Lookup pro Artikel; drucke '@ price' oder 'not sold'; Summe mit ?? 0
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss

Übe selbstständig: Swift-Playground