Numeryczne enumy z tabelami
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 52 z 73.
Zbudujmy poprawnie wzorzec tabeli stałych. Wybierz nazwę tabeli 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 (odpowiednie są też kody w stylu HTTP, takie jak 200 i 404).
Elementy tabeli przydają się w porównaniach. Funkcja otrzymująca rolę może rozgałęziać działanie na podstawie nazwanych stałych zamiast samych 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
ŁatwyUtwórz stałą tabelę o nazwie UserRole z trzema elementami:
Admin=1Editor=2Viewer=3
Utwórz funkcję checkPermissions, która przyjmuje role: number i wypisuje:
Full access granted, jeśli rola toUserRole.AdminEdit access granted, jeśli rola toUserRole.EditorView access onlyw przeciwnym razie
Następnie, w podanej kolejności:
- wypisz
UserRole.Admin - wypisz
UserRole.Editor - wypisz
UserRole.Viewer - wywołaj
checkPermissions(UserRole.Admin) - wywołaj
checkPermissions(UserRole.Editor) - wywołaj
checkPermissions(UserRole.Viewer)
Spróbuj swoich sił
-- Napisz kod tutaj
-- 1) utwórz tabelę stałych UserRole (Admin=1, Editor=2, Viewer=3)
-- 2) napisz funkcję checkPermissions(role: number) z użyciem if/elseif/else
-- 3) wypisz trzech członków, a następnie wywołaj funkcję dla każdego z nich
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
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 niczego nie zwracająceParametry opcjonalneDomyślne wartości parametrówFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Typy podstawowe
Typy podstawowe: num, str, boolTyp „any”: furtka awaryjnaTyp „unknown”Typy Nil i opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenie typów podstawowych5Aliasy, 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
Tablice typowaneDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie map i dostęp do nichIterowanie po tabelachTabele o mieszanej strukturzeWielowymiarowe tablice typowanetable.unpack i varargsPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online