Czym jest typ wyliczeniowy?
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 37 z 78.
Niektóre wartości mogą przyjmować tylko jedną z kilku opcji: światło drogowe jest czerwone, żółte lub zielone, a gracz jest bezczynny, biegnie lub skacze. Możesz przechowywać opcję jako liczbę, używając 0 dla stanu bezczynności i 1 dla biegu, ale wtedy każdy czytelnik musi pamiętać, co oznacza każda liczba:
var state := 1
if state == 1:
print("Running")enum (skrót od wyliczenia) nadaje każdej opcji nazwę. GDScript numeruje nazwy za Ciebie, zaczynając od 0:
enum State { IDLE, RUN, JUMP }Teraz wpisujesz State.RUN zamiast 1: nazwę enuma, kropkę i opcję. Kod mówi, co to oznacza:
var state := State.RUN
if state == State.RUN:
print("Running")Wyliczenie deklaruje się na najwyższym poziomie skryptu, obok func _ready():, a nie wewnątrz niego. Linia enum wewnątrz funkcji jest błędem, który zatrzymuje program, zanim ten się uruchomi:
extends Node
enum State { IDLE, RUN, JUMP }
func _ready():
var state := State.JUMP
print(state) # 2Opcje są stałymi, więc State.RUN = 5 jest błędem. Błędnie zapisana opcja, taka jak State.RUNN, zostanie zgłoszona przed uruchomieniem programu, natomiast niewłaściwa liczba, taka jak 3 zamiast 2, pozostanie niezauważona.
Wyzwanie
ŁatwyProgram odczytuje liczbę całkowitą od 0 do 3, która oznacza pogodę. Nadaj liczbom nazwy za pomocą wyliczenia i wypisz poradę.
- Na najwyższym poziomie skryptu zadeklaruj wyliczenie o nazwie
Weatherz opcjamiSUNNY,CLOUDY,RAINYiSNOWY, w tej kolejności. - Porównaj
weatherz opcjami wyliczenia (nie z liczbami) i wypisz jeden wiersz:
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.SNOWY:Build a snowman
Dla wejścia 2 wynikiem jest:
Take an umbrellaSpróbuj swoich sił
extends Node
# Zadeklaruj tutaj enum Weather
func _ready():
var weather := int(OS.read_string_from_stdin())
# Porównaj weather z wartościami enum i wyświetl poradę
pass
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