Menu
Coddy logo textTech

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
end

Zwróć 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.

challenge icon

Wyzwanie

Łatwy

Utwórz stałą tabelę o nazwie UserRole z trzema elementami:

  • Admin = 1
  • Editor = 2
  • Viewer = 3

Utwórz funkcję checkPermissions, która przyjmuje role: number i wypisuje:

  • Full access granted, jeśli rola to UserRole.Admin
  • Edit access granted, jeśli rola to UserRole.Editor
  • View access only w przeciwnym razie

Następnie, w podanej kolejności:

  1. wypisz UserRole.Admin
  2. wypisz UserRole.Editor
  3. wypisz UserRole.Viewer
  4. wywołaj checkPermissions(UserRole.Admin)
  5. wywołaj checkPermissions(UserRole.Editor)
  6. 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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online