Wartości typu wyliczeniowego
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 39 z 78.
Każda opcja wyliczenia jest typu int, więc możesz porównywać opcje i wykonywać na nich obliczenia:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
print(Day.FRIDAY) # 4
print(Day.SATURDAY > Day.FRIDAY) # true
print(Day.FRIDAY + 1) # 5Samo wyliczenie działa jak słownik mapujący nazwy na wartości. keys() zwraca nazwy w kolejności, values() — wartości, a size() — liczbę opcji:
print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7Aby wypisać nazwę wartości, użyj jej jako indeksu w keys(). Działa to, gdy opcje mają domyślne wartości 0, 1, 2... W przypadku enuma z wybranymi wartościami użyj find_key(), która zwraca nazwę wartości:
var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAYNa najwyższym poziomie, przy enum Coin { COPPER = 1, SILVER = 10 }, Coin.keys()[10] wykracza poza zakres, a find_key() działa:
print(Coin.find_key(10)) # SILVERAby zrobić to w drugą stronę, czyli przejść od nazwy zapisanej jako tekst do jej wartości, użyj nawiasów kwadratowych. Najpierw sprawdź nazwę za pomocą has(): nazwa, której nie ma w wyliczeniu, powoduje błąd.
var text := "FRIDAY"
if Day.has(text):
print(Day[text]) # 4for day_name in Day: iteruje po nazwach, podobnie jak pętla po słowniku.
Wyzwanie
ŁatwySkrypt deklaruje wyliczenie Day, od MONDAY do SUNDAY. Program odczytuje dwa wiersze: nazwę dnia zapisaną wielkimi literami oraz liczbę dni (liczbę całkowitą, 0 lub większą).
Wypisz dwa wiersze:
- Nazwę,
has the valuei wartość tego dnia w wyliczeniu In, liczbę,days:i nazwę dnia przypadającego tyle dni później
Po SUNDAY tydzień zaczyna się ponownie od MONDAY. Dla danych wejściowych FRIDAY i 3 wynik to:
FRIDAY has the value 4
In 3 days: MONDAYSpróbuj swoich sił
extends Node
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
var day_name := OS.read_string_from_stdin()
var days := int(OS.read_string_from_stdin())
# Wypisz wartość bieżącego dnia oraz dnia przypadającego po podanej liczbie dni
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