Numeryczne enumy z tabelami
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 56 z 80.
Oto pełny wzorzec tabeli stałych. Wybierz nazwę tabeli zapisaną w PascalCase, przypisz każdemu elementowi jawną liczbę, a od tej pory kod będzie posługiwać się nazwami:
local UserRole = {
Admin = 1,
Editor = 2,
Viewer = 3,
}W przeciwieństwie do enum w TypeScript, wartości nie są przypisywane automatycznie. Każdą wartość wybierasz samodzielnie. Rozpoczęcie od 1 dobrze pasuje do konwencji Lua, ale sprawdzi się dowolny schemat (mogą to być też kody w stylu HTTP, takie jak 200 i 404).
Elementy przydają się szczególnie w porównaniach. Funkcja, która otrzymuje rolę, może wybierać gałąź na podstawie nazwanych stałych zamiast zwykłych liczb:
local function checkPermissions(role: number)
if role == UserRole.Admin then
print("Full access granted")
elseif role == UserRole.Editor then
print("Edit access granted")
else
print("View access only")
end
endZwróć uwagę, że parametr ma typ number: sam wzorzec tabeli nie ogranicza dozwolonych liczb. Taką gwarancję zapewniają unie literałów, które poznasz w następnej lekcji.
Wyzwanie
ŁatwyPodaj trzy poziomy trudności za pomocą tabeli stałych.
- Utwórz
local Level = {Easy = 1, Normal = 2, Hard = 3}. - Napisz
local function describeLevel(level: number): string, która zwraca"Relaxed"dlaLevel.Easy,"Standard"dlaLevel.Normal, a w pozostałych przypadkach"Brutal". - Wypisz
Level.Hard, a następniedescribeLevel(Level.Normal).
Naciśnij Uruchom kod: w wyniku pojawią się 3 i Standard.
Spróbuj swoich sił
-- 1) tabela stałych Level (Easy = 1, Normal = 2, Hard = 3)
-- 2) describeLevel(level: number): string z użyciem if/elseif/else
-- 3) wypisz Level.Hard, a następnie wynik describeLevel(Level.Normal)
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