Sözlük Kalıpları
Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 9 / 78.
Bir sözlük kalıbı, anahtarları ve değerlerinin eşleşmesi gereken kalıpları listeler. Herhangi bir sırada, tam olarak bu anahtarlara sahip bir sözlükle eşleşir:
var event := {"type": "move", "dir": "left"}
match event:
{"type": "jump"}:
print("Jump!")
{"type": "move", "dir": var d}:
print("Moving ", d)Moving left"type" değerinin "move" olması gerekir ve "dir" değerinin ne olduğuna bakılmaksızın bu değer d içinde saklanır. Desenin listelemediği bir anahtara sahip sözlük eşleşmez. Ek anahtarlara izin vermek için sona .. ekleyin:
var hit := {"type": "attack", "damage": 30, "crit": true}
match hit:
{"type": "attack", "damage": _}:
print("Exactly two keys")
{"type": "attack", "damage": var dmg, ..}:
print("Hit for ", dmg)Hit for 30Değer olmadan yazılan bir anahtar, yalnızca anahtarın var olup olmadığını kontrol eder: {"name", ..}:, "name" anahtarına sahip herhangi bir sözlükle eşleşir. Koruyucular burada da çalışır: {"type": "attack", "damage": var dmg} when dmg > 50:.
Görev
KolayProgram, virgüllerle ayrılmış key=value çiftleri olarak yazılmış bir oyun olayını, örneğin type=move,dir=left, okur ve (önceden yazılmış olan) event sözlüğünde saklar. Tüm değerler dizgedir.
Sözlük desenleriyle bir match deyimini şu sırayla kullan:
- Tam olarak
type("move") vediranahtarları:Movingve yönü yazdır - Tam olarak
type("attack") vedamageanahtarları:Taking, hasarı vedamageyazdır typedeğeri"heal"ve başka anahtarlar da olabilir:Healingyazdırtypeanahtarı olan diğer tüm sözlükler:Unknown event:ve türü yazdır- Diğer her şey:
Invalid eventyazdır
type=attack,damage=30 girdisi için çıktı şöyledir:
Taking 30 damagetype=move,dir=up,speed=2 gibi bir olayda fazladan bir anahtar bulunur, bu nedenle Unknown event: move yazdırır.
Kendin dene
extends Node
func _ready():
var event := {}
for pair in OS.read_string_from_stdin().split(","):
var kv := pair.split("=")
event[kv[0]] = kv[1]
# event değişkenini sözlük kalıplarıyla eşleştir
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