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 lockedWzorzec 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 10Wzorzec 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.
Wyzwanie
ŁatwyNapisz 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: wypiszCorrect! 0: wypiszYou 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
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
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online