Menu
CoddyTech

Dopasowanie ze zmiennymi

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 6 z 78.

W lekcji Instrukcja match każdy wzorzec był wartością literału, taką jak 1: lub "bow":. Wzorzec może też być stałą lub zmienną: match porównuje wartość z tym, co przechowuje dana nazwa w chwili wykonania tej linii:

const SECRET := 42
var guess := 42
match guess:
	SECRET:
		print("You found it!")
	_:
		print("Try again")
You found it!

Drugi nowy wzorzec to wzorzec wiążący: var, po którym następuje nowa nazwa. Podobnie jak _, dopasowuje dowolną wartość, a także zapisuje tę wartość w nowej zmiennej, której możesz używać wewnątrz jej bloku:

var level := 5
match level:
	1:
		print("Tutorial")
	var n:
		print("Level %d is locked" % n)
Level 5 is locked

Wzorzec przypisania jest najbardziej przydatny, gdy dopasowujesz wynik wyrażenia, które nie ma własnej nazwy:

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

Wzorzec wiążący pasuje do wszystkiego, więc umieszcza się go na końcu, tak jak _. Jego nazwa musi być nowa: var level: w drugim przykładzie byłoby błędem, ponieważ level już istnieje. Nie może też znajdować się w tym samym wierszu co inne wzorce oddzielone przecinkami.

match ściśle porównuje typy: ciąg znaków "5" nie pasuje do wzorca 5, podobnie jak liczba zmiennoprzecinkowa 5.0. Przekonwertuj tekst odczytany z wejścia za pomocą int(), zanim dopasujesz go do liczb.

challenge icon

Wyzwanie

Łatwy

Napisz sprawdzanie zgadywanej liczby. Stała SECRET przechowuje tajną liczbę, a program odczytuje przypuszczenie gracza jako liczbę całkowitą do zmiennej guess.

Napisz instrukcję match dla guess z trzema wzorcami:

  • Stała SECRET: wypisz Correct!
  • 0: wypisz You gave up.
  • Wzorzec wiążący dla każdego innego przypuszczenia: wypisz przypuszczenie, a następnie is not the number.

Dla wejścia 17 wynikiem jest:

17 is not the number.

Spróbuj swoich sił

extends Node

func _ready():
	const SECRET := 42
	var guess := int(OS.read_string_from_stdin())
	# Napisz poniżej instrukcję match
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online