Menu
Coddy logo textTech

Optionaler Lookup

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

Dictionary-Subscripts geben immer ein Optional zurück: den Wert, wenn der Schlüssel existiert, nil, wenn er nicht existiert. Swift zwingt Sie dazu, 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ählen Sie diejenige, die zur Situation passt.

1. if let: behandle beide Zweige explizit:

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

2. Nil-Coalescing-Operator ??: einen Standardwert direkt angeben:

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

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

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

Aufgabe

Einfach

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

Suche für jeden Artikel in der Reihenfolge der Eingabe im Dictionary prices danach. Gib pro Artikel eine Zeile aus:

  • <item> @ <price>, wenn der Artikel im Dictionary enthalten ist
  • <item> not sold andernfalls

Gib nach der Auflistung aller Artikel eine letzte Zeile aus: Total: <sum>. Behandle fehlende Artikel so, als würden sie 0 kosten, indem du den Nil-Coalescing-Operator verwendest.

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

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

Spickzettel

Dictionary-Subscripts geben ein Optional zurück — den Wert, wenn der Schlüssel existiert, nil, falls nicht.

1. if let — beide Zweige behandeln:

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

2. Nil-Coalescing ?? — einen Fallback bereitstellen:

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

3. Subscript mit Standardwert — Fallback, der auch beim Schreiben funktioniert:

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

Probier es selbst

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

// TODO: Suche pro Artikel; drucke '@ Preis' oder 'nicht verkauft'; 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