Sözlükleri Birleştirme
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 21 / 78.
merge(), başka bir sözlüğün tüm çiftlerini, üzerinde çağrıldığı sözlüğe ekler. Yalnızca diğer sözlükte bulunan anahtarlar sona eklenir:
var settings := {"volume": 5, "difficulty": "normal"}
var saved := {"difficulty": "hard", "subtitles": true}
settings.merge(saved)
print(settings){ "volume": 5, "difficulty": "normal", "subtitles": true }"difficulty" her iki sözlükte de bulunuyor ve merge(), settings içinde zaten bulunan değeri korudu: varsayılan olarak mevcut anahtarların üzerine yazılmaz. Diğer sözlüğün kazanması için ikinci bağımsız değişken olarak true iletin:
var options := {"volume": 5, "difficulty": "normal"}
options.merge(saved, true)
print(options["difficulty"]) # hardmerge() sözlüğün kendisini değiştirir ve hiçbir şey döndürmez; bu yüzden var result := a.merge(b) bir hatadır. Her iki sözlüğü de olduğu gibi korumak için merged() kullanın. Aynı bağımsız değişkenleri alır ve yeni bir sözlük döndürür:
var defaults := {"volume": 5, "difficulty": "normal"}
var choice := {"difficulty": "hard"}
var final_settings := defaults.merged(choice, true)
print(final_settings) # { "volume": 5, "difficulty": "hard" }
print(defaults) # { "volume": 5, "difficulty": "normal" }Bir anahtar her iki sözlükte de varsa ve değerleri birleştirmek, örneğin iki miktarı toplamak istiyorsan, döngüyü kendin yaz:
var bag := {"gold": 10, "gems": 1}
var loot := {"gold": 5, "keys": 2}
for key in loot:
bag[key] = bag.get(key, 0) + loot[key]
print(bag) # { "gold": 15, "gems": 1, "keys": 2 }Görev
KolayBir oyun güncellemesi yeni ayarlar ekledi. Oyuncunun kaydedilmiş ayarları, virgülle ayrılmış key=value çiftleri olarak tek satırlık girdiden okunur (satır boş olabilir). Verilen kod bunları saved sözlüğünde saklar.
Kaydetme dosyasında eksik olan ayarları tamamla: Anahtarı henüz içinde bulunmayan her defaults çiftini, oyuncunun seçtiği değerleri ve defaults sözlüğünü değiştirmeden saved sözlüğüne ekle. Ardından saved sözlüğünü yazdır ve sonraki satırda defaults sözlüğünü yazdır.
difficulty=hard,volume=8 girdisi için çıktı şöyledir:
{ "difficulty": "hard", "volume": "8", "subtitles": "off", "language": "en" }
{ "difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en" }Kendin dene
extends Node
func _ready():
var defaults := {"difficulty": "normal", "volume": "5", "subtitles": "off", "language": "en"}
var saved := {}
for pair in OS.read_string_from_stdin().split(",", false):
var parts := pair.split("=")
saved[parts[0]] = parts[1]
# Eksik varsayılan değerleri saved sözlüğüne ekle, ardından her iki sözlüğü de yazdır
pass
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
1String’leri Derinlemesine İnceleme
String MetotlarıString’lerde AramaDeğiştirme ve KırpmaBölme ve BirleştirmeTekrar: Kullanıcı Adı Kontrolü4Sözlükler Bölüm 2
İç İçe SözlüklerSözlük DizileriSözlükleri BirleştirmeSözlükleri KopyalamaTekrar - Frekans Sayacı10İleri Düzey Fonksiyonlar
Birden Fazla Değer DöndürmeLambda Fonksiyonları Bölüm 1Lambda Fonksiyonları Bölüm 2Tekrar - Lambda ile SıralamaÖzyinelemeli Fonksiyonlar Bölüm 1Özyinelemeli Fonksiyonlar Bölüm 2Tekrar - İç İçe Dizilerin Toplamı13Envanter Yönetim Sistemi
Projeye Genel BakışÜrün Ekle2İleri Düzey Karar Verme
Değişkenlerle EşleştirmeEşleştirme KoşullarıDizi KalıplarıSözlük KalıplarıÜyelik KontrolleriÖzet - Komut Ayrıştırıcı5Rehber Uygulaması
Menüyü GörüntüleKişi Ekle8Öğrenci Kayıt Yöneticisi
Proje Genel BakışıÖğrenci Ekle11Üst Düzey Fonksiyonlar
map Metodufilter Metodureduce Metoduany ve allTekrar - E-posta DoğrulayıcıTekrar - Sayı İşleyici3Çok Boyutlu Diziler
2B Dizilere Giriş2B Dizi Elemanlarına Erişim2B Dizilerle İç İçe DöngülerTekrar - 2B DizilerDüzensiz DizilerYaygın 2B Dizi ÖrüntüleriTekrar - Oyun Tahtası6Sözlüklerle Kümeler
Küme Nedir?Küme Olarak SözlükEkleme ve SilmeBirleşim ve KesişimKüme FarkıTekrar: Yinelenenleri Silme9Gelişmiş Veri Toplama
Değerleri ToplamaEn Küçük ve En Büyük Değeri BulmaÖzel SıralamaÖzet - Sözlük SıralayıcıKendi başına pratik yap: Online GDScript derleyicisi