Menu
Coddy logo textTech

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ür

Adlandı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]
challenge icon

Görev

Orta

Tek 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=2

Kopya 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ür

if 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
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