Menu
CoddyTech

Enumy tekstowe jako unie

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 57 z 80.

Liczby sprawiają, że logi są nieczytelne: widząc 2, niewiele się dowiadujesz, a widząc "down", dowiadujesz się wszystkiego. Do tworzenia czytelnych wyliczeń służą typy unii literałów w Luau: typ, którego elementami są dokładne ciągi znaków:

type Direction = "up" | "down" | "left" | "right"

local facing: Direction = "up"    -- ✓
local typo: Direction = "upp"     -- ✗ błąd typu podczas edycji

Zmienna z adnotacją typu Direction może przechowywać te cztery ciągi znaków i nic poza nimi. Zrób literówkę, a kontroler typów natychmiast ją wykryje: błąd nigdy nie dotrze do gracza.

W czasie działania programu wartościami są zwykłe ciągi znaków. Wypisuj je, łącz je ze sobą i porównuj za pomocą ==. Wszystko, co wiesz o ciągach znaków, ma tu zastosowanie:

print(facing)            -- w górę
print(`facing {facing}`) -- facing w górę

Porównaj dwa wzorce, które już znasz: tabela stałych tworzy jedną wartość w czasie działania programu (UserRole) zawierającą elementy, podczas gdy unia literałów nie tworzy żadnej wartości. Nie ma tabeli Direction — istnieje tylko reguła, którą kontroler typów egzekwuje, określając, które ciągi znaków są dozwolone. Opisowe, samodokumentujące się wartości, które nie generują żadnego kosztu w czasie działania programu, sprawiają, że unie literałów są najczęściej wybieranym stylem definiowania wyliczeń w kodzie Luau.

challenge icon

Wyzwanie

Łatwy

Zapisz kierunek, który może przyjmować tylko jedną z czterech nazw.

  1. Napisz type Direction = "up" | "down" | "left" | "right".
  2. Zadeklaruj local facing: Direction = "left".
  3. Wypisz facing, a następnie `The player moves {facing}`.

Naciśnij Run Code: wynik pokazuje left i The player moves left.

Spróbuj swoich sił

-- 1) zdefiniuj typ Direction jako unię czterech ciągów znaków
-- 2) local facing: Direction = "left"
-- 3) wypisz facing, a następnie zdanie

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online