Menu
Coddy logo textTech

İsteğe Bağlı Arama

Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 13 / 56.

Sözlük alt simgeleri her zaman bir Optional döndürür: anahtar mevcut olduğunda değer, mevcut olmadığında nil. Swift, her iki durumu da ele almanızı zorunlu kılar.

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

Optional ile başa çıkmanın üç deyimsel yolu. Duruma uygun olanı seçin.

1. if let: her iki dalı da açıkça ele al:

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

2. nil-coalescing ??: satır içinde bir yedek değer sağlayın:

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

3. varsayılan değerli alt simge: sonuç aynıdır, ancak o anahtara yeniden yazarsanız varsayılan değer de yerinde kalır:

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

Görev

Kolay

prices sözlüğü verilmiştir. Tek bir giriş satırı okuyun: kullanıcının satın almak istediği öğelerin virgülle ayrılmış listesi.

Her item için, giriş sırasını koruyarak prices içinde arayın. Her item için bir satır yazdırın:

  • <item> @ <price>, item sözlükte olduğunda
  • aksi takdirde <item> not sold

Tüm items listelendikten sonra son bir satır yazdırın: Total: <sum>. Eksik items için nil birleştirme operatörünü kullanarak maliyeti 0 kabul edin.

apple,bread,olive,milk girdisi için çıktı şöyledir:

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

Kendin dene

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

// TODO: öğe başına arama; '@ price' veya 'not sold' yazdır; ?? 0 ile topla
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Swift playground