Wzorzec enumów w Luau
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 55 z 80.
Programy są pełne wartości pochodzących z niewielkiego, ustalonego zbioru: zamówienie ma status oczekujące, wysłane lub dostarczone; gracz jest skierowany w górę, w dół, w lewo lub w prawo. Wiele języków ma do tego słowo kluczowe enum. Luau go nie ma i nie jest ono potrzebne, ponieważ tę rolę spełniają dwa narzędzia, które już znasz.
Wzorzec 1: tablica stałych. Zwykła tablica przypisuje znaczącym nazwom wartości, zastępując „magiczne liczby” porozrzucane w kodzie:
local Status = {
Pending = 1,
Active = 2,
Done = 3,
}
print(Status.Active) -- 2To rzeczywista wartość w czasie działania programu: możesz odczytać Status.Active, porównać z nią inną wartość i przekazywać ją dalej — tak jak tablice, których używasz od samego początku.
Wzorzec 2: unia literałów. Typ złożony z dokładnych wartości tekstowych, wykorzystujący typy literałowe poznane w rozdziale o uniach:
type Color = "red" | "green" | "blue"
local favorite: Color = "green" -- ✓
local oops: Color = "yellow" -- ✗ błąd typuUnia istnieje tylko na potrzeby mechanizmu sprawdzającego typy i nie powoduje żadnych kosztów w czasie działania programu, ale gwarantuje, że zmienna nie może przechowywać wartości spoza zbioru. Te dwa wzorce się uzupełniają: tablica udostępnia wartości w czasie działania programu pod jedną nazwą, a unia daje gwarancję na etapie kompilacji. W dalszej części tego rozdziału poznasz też table.freeze, które chroni tablicę stałych przed modyfikacją w czasie działania programu.
Wyzwanie
ŁatwyWypróbuj oba wzorce wyliczeniowe obok siebie.
- Utwórz tabelę stałych
local Speed = {Slow = 8, Fast = 24}. - Zapisz
type Pace = "slow" | "fast"i zadeklarujlocal pace: Pace = "fast". - Wyświetl
Speed.Fast, a następniepace.
Naciśnij Uruchom kod: wynik pokazuje 24 i fast.
Spróbuj swoich sił
-- 1) stała tabela Speed z Slow = 8, Fast = 24
-- 2) typ Pace = "slow" | "fast", następnie lokalna zmienna pace: Pace = "fast"
-- 3) wypisz Speed.Fast, a następnie pace
Wszystkie lekcje w sekcji Wprowadzenie do Luau
1Pierwsze kroki z Luau
Czym jest Luau?Dlaczego warto używać Luau?Twój pierwszy kod w LuauSprawdzanie typów i tryby błędówPodsumowanie: Wprowadzenie do Luau4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji anonimowychFunkcje niezwracające wartościParametry opcjonalneDomyślne wartości parametrówWartości domyślne dla typów BooleanFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Podstawowe typy
Number, String i BooleanTyp 'any': wyjście awaryjneTyp 'unknown'Nil i typy opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenia z podstawowych typów5Aliasy, typy sumy i przekroju
Aliasy typów dla typów prostychTypy sumyPraca z typami sumyTypy literałoweTypy przekrojuŁączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów8Enumy po luauowemu
Wzorzec enumów w LuauNumeryczne enumy z tabelamiEnumy tekstowe jako unieUżywanie enumów opartych na unii literałówZamrażanie stałych tabelPodsumowanie: enumy po luauowemu3Typowane tabele: tablice i mapy
Typowane tabliceDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie i uzyskiwanie dostępu do mapIterowanie po tabelachTabele o mieszanej strukturzeOdczytywanie siatkiTworzenie siatkitable.unpackPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online