Typy wyliczeniowe w match
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 40 z 78.
Instrukcja match może porównać wartość z opcjami enuma. Każdy wzorzec jest opcją zapisaną za pomocą nazwy enuma:
enum Light { RED, YELLOW, GREEN }
func _ready():
var light := Light.YELLOW
match light:
Light.RED:
print("Stop")
Light.YELLOW:
print("Slow down")
Light.GREEN:
print("Go")To wyświetla Slow down. Podobnie jak w każdym match, kilka opcji może korzystać z tej samej gałęzi, oddzielonych przecinkami, a _ przechwytuje wszystkie pozostałe:
match light:
Light.RED, Light.YELLOW:
print("Wait")
_:
print("Go")Funkcja zwracająca wartość musi zawierać instrukcję return na każdej ścieżce. Nawet gdy gałęzie obejmują wszystkie możliwości, GDScript zgłasza Not all code paths return a value, chyba że instrukcja match zawiera gałąź _ albo występuje po niej instrukcja return:
func next_light(light: Light) -> Light:
match light:
Light.RED:
return Light.GREEN
Light.GREEN:
return Light.YELLOW
_:
return Light.REDParametr i typ zwracany to typ wyliczeniowy Light. Funkcja jest zadeklarowana na najwyższym poziomie, podobnie jak typ wyliczeniowy.
Wyzwanie
ŁatwySkrypt deklaruje wyliczenie State z opcjami IDLE, WALK, RUN, JUMP i FALL. Uzupełnij funkcję describe(): otrzymuje ona stan i zwraca jego opis, wybrany za pomocą match:
State.IDLE:"Standing still"State.WALKiState.RUN:"Moving"State.JUMPiState.FALL:"In the air"
Użyj jednej gałęzi dla WALK i RUN oraz jednej dla JUMP i FALL. Podany kod w _ready() odczytuje wiersz nazw stanów i wyświetla każdy z nich wraz z opisem. Dla wejścia IDLE RUN FALL wynikiem jest:
IDLE: Standing still
RUN: Moving
FALL: In the airSpróbuj swoich sił
extends Node
enum State { IDLE, WALK, RUN, JUMP, FALL }
func describe(state: State):
# Zwróć opis stanu za pomocą match
pass
func _ready():
var names := OS.read_string_from_stdin().split(" ", false)
for state_name in names:
print(state_name, ": ", describe(State[state_name]))
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