Menu
CoddyTech

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 locked

Ein 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 10

Ein 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.

challenge icon

Aufgabe

Einfach

Schreibe 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: gib Correct! aus
  • 0: gib You 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler