Menu
CoddyTech

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
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

Podaj trzy poziomy trudności za pomocą tabeli stałych.

  1. Utwórz local Level = {Easy = 1, Normal = 2, Hard = 3}.
  2. Napisz local function describeLevel(level: number): string, która zwraca "Relaxed" dla Level.Easy, "Standard" dla Level.Normal, a w pozostałych przypadkach "Brutal".
  3. Wypisz Level.Hard, a następnie describeLevel(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

Poćwicz samodzielnie: Kompilator Luau online