İ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 // 03. 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]Görev
Kolayprices 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>,itemsö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: 8Kendin 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
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
1Stringler Derinlemesine
Sayma ve İndekslerBüyük-Küçük Harf ve KırpmaStringlerde AramaBölme ve BirleştirmeAlt Stringleri DeğiştirmeÖzet - Kullanıcı Adı Kontrolü4Kümeler
Küme OluşturmaBirleşim ve KesişimFark ve Simetrik FarkAlt Küme ve Üst KümeÖzet - Etiket Filtresi7Proje - Alışkanlık Takibi
Projeye Genel BakışTamamlandı Olarak İşaretle10Proje - Quiz Motoru
Projeye Genel BakışSoruları Sorma2Aralıklar ve Adımlar
Kapalı ve Yarı AçıkStride (Adım)Aralık MetotlarıSwitch İçinde AralıklarÖzet - Takvim Izgarası5Yüksek Mertebeden Fonksiyonlar Bölüm 1
MapFilterReduceMap, filter, reduce zincirlemeÖzet - Kelime İstatistikleri3Sözlükler
Sözlük Tanımlamaİsteğe Bağlı AramaSözlükleri GüncellemeSözlükleri YinelemeDeğerleri GruplandırmaÖzet - Envanter6Yüksek Seviyeli Fonksiyonlar Pt. 2
compactMapflatMapsorted(by:)İşlem Hatları OluşturmaÖzet - Liderlik TablosuKendi başına pratik yap: Swift playground