Sözlükleri Güncelleme
Coddy'nin Swift Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 14 / 56.
Bir sözlüğe, ondan okuduğunuz yöntemle aynı şekilde yazarsınız: indis (subscript) kullanarak.
var prices: [String: Int] = ["apple": 1]
prices["bread"] = 3 // anahtarı ekler
prices["apple"] = 2 // mevcut bir anahtarı günceller
prices["apple"] = nil // anahtarı kaldırırİki adlandırılmış yöntem aynı şeyi daha açık bir şekilde yapar:
prices.updateValue(5, forKey: "milk") // eski değeri veya nil döndürür
prices.removeValue(forKey: "bread") // kaldırılan değeri veya nil döndürürAdlandırılan metotlar, anahtarın zaten var olup olmadığını bilmeniz gerektiğinde yararlı olan önceki değeri döndürür.
Önceki dersteki varsayılan indis (default-subscript) deseni mutasyonla mükemmel bir şekilde zincirlenir; bir if yazmadan bu şekilde bir sayaç oluşturursunuz:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]Görev
OrtaTek bir giriş satırı okuyun: başlangıçtaki bir sözlük üzerinde gerçekleştirilecek işlemlerin virgülle ayrılmış bir listesi. Her işlem şunlardan biridir:
set:<key>:<value>ekle veya güncelle (değer bir tam sayıdır)add:<key>:<value>değeri mevcut olana ekle (varsayılan alt simge -default-subscript- desenini kullanın)del:<key>anahtarı kaldır
Başlangıçta boş olan bir [String: Int] yapısına her işlemi sırasıyla uyguladıktan sonra, anahtarları alfabetik sırayla, her satıra bir tane gelecek şekilde, <key>=<value> formatında yazdırın.
set:a:5,add:a:3,set:b:1,del:b,add:c:2 girişi için çıktı şöyledir:
a=8
c=2Kopya kağıdı
Bir sözlüğü indis (subscript) veya adlandırılmış metotlar kullanarak değiştirin:
prices["bread"] = 3 // ekle
prices["apple"] = 2 // güncelle
prices["apple"] = nil // kaldır
prices.updateValue(5, forKey: "milk") // eski değeri veya nil döndürür
prices.removeValue(forKey: "bread") // kaldırılan değeri veya nil döndürürif kullanmadan değişiklik yapmak için varsayılan indis (default-subscript) desenini kullanın:
var counts: [String: Int] = [:]
for letter in ["a", "b", "a"] {
counts[letter, default: 0] += 1
}
// counts == ["a": 2, "b": 1]Kendin dene
let ops = readLine()!.components(separatedBy: ",")
var dict: [String: Int] = [:]
// YAPILACAK: her bir işlemi ayrıştırın ve set/add/del uygulayın; sıralanmış anahtarları değerleriyle birlikte yazdırın
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 Tablosu