Match mit Variablen
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 6 von 78.
In der Lektion Match Statement war jedes Muster ein Literalwert wie 1: oder "bow":. Ein Muster kann auch eine Konstante oder eine Variable sein: match vergleicht den Wert mit dem, was dieser Name enthält, wenn die Zeile ausgeführt wird:
const SECRET := 42
var guess := 42
match guess:
SECRET:
print("You found it!")
_:
print("Try again")You found it!Das zweite neue Muster ist das Bindungsmuster: var gefolgt von einem neuen Namen. Wie _ passt es zu jedem Wert und speichert diesen Wert außerdem in der neuen Variablen, die du innerhalb ihres Blocks verwenden kannst:
var level := 5
match level:
1:
print("Tutorial")
var n:
print("Level %d is locked" % n)Level 5 is lockedEin Bindungsmuster ist am nützlichsten, wenn du das Ergebnis eines Ausdrucks abgleichst, der keinen eigenen Namen hat:
var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
12:
print("Double six!")
var total:
print("You rolled ", total)You rolled 10Ein Bindungsmuster passt auf alles und steht daher zuletzt, wie _. Sein Name muss neu sein: var level: im zweiten Beispiel wäre ein Fehler, weil level bereits existiert. Es kann auch nicht mit anderen durch Kommas getrennten Mustern in einer Zeile stehen.
match vergleicht Typen strikt: Die Zeichenkette "5" entspricht nicht dem Muster 5, und auch der Float 5.0 entspricht ihm nicht. Wandle aus der Eingabe gelesenen Text mit int() in eine Zahl um, bevor du ihn mit Zahlen abgleichst.
Aufgabe
EinfachSchreibe eine Prüfung für ein Zahlenratespiel. Die Konstante SECRET enthält die geheime Zahl, und das Programm liest den Tipp des Spielers als Ganzzahl in guess ein.
Schreibe eine match-Anweisung für guess mit drei Mustern:
- Die Konstante
SECRET: gibCorrect!aus 0: gibYou gave up.aus- Ein Bindungsmuster für jeden anderen Tipp: gib den Tipp gefolgt von
is not the number.aus.
Für die Eingabe 17 lautet die Ausgabe:
17 is not the number.Probier es selbst
extends Node
func _ready():
const SECRET := 42
var guess := int(OS.read_string_from_stdin())
# Schreibe die match-Anweisung unten
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