Dictionary-Muster
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 9 von 78.
Ein Wörterbuchmuster listet Schlüssel und die Muster auf, denen ihre Werte entsprechen müssen. Es stimmt mit einem Wörterbuch überein, das genau diese Schlüssel enthält, und zwar in beliebiger Reihenfolge:
var event := {"type": "move", "dir": "left"}
match event:
{"type": "jump"}:
print("Jump!")
{"type": "move", "dir": var d}:
print("Moving ", d)Moving leftDer Wert von "type" muss "move" sein, und der Wert von "dir" wird, unabhängig davon, welcher Wert es ist, in d gespeichert. Ein Dictionary mit einem Schlüssel, den das Muster nicht aufführt, stimmt nicht überein. Füge am Ende .. hinzu, um zusätzliche Schlüssel zuzulassen:
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 30Ein Schlüssel, der ohne Wert geschrieben wird, prüft nur, ob der Schlüssel vorhanden ist: {"name", ..}: passt zu jedem Dictionary, das einen Schlüssel "name" hat. Auch hier funktionieren Wächter: {"type": "attack", "damage": var dmg} when dmg > 50:.
Aufgabe
EinfachDas Programm liest ein Spielereignis, das als durch Kommas getrennte key=value-Paare geschrieben ist, z. B. type=move,dir=left, und speichert es im Wörterbuch event (bereits geschrieben). Alle Werte sind Zeichenketten.
Verwende eine match-Anweisung mit Wörterbuchmustern in dieser Reihenfolge:
- Genau die Schlüssel
type("move") unddir: GibMovingund die Richtung aus - Genau die Schlüssel
type("attack") unddamage: GibTaking, den Schaden unddamageaus typeist"heal", mit beliebigen anderen Schlüsseln: GibHealingaus- Jedes andere Wörterbuch mit einem Schlüssel
type: GibUnknown event:und den Typ aus - Alles andere: Gib
Invalid eventaus
Für die Eingabe type=attack,damage=30 lautet die Ausgabe:
Taking 30 damageEin Ereignis wie type=move,dir=up,speed=2 hat einen zusätzlichen Schlüssel und gibt daher Unknown event: move aus.
Probier es selbst
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 mit Dictionary-Mustern abgleichen
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler