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 edycjiZmienna 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.
Wyzwanie
ŁatwyZapisz kierunek, który może przyjmować tylko jedną z czterech nazw.
- Napisz
type Direction = "up" | "down" | "left" | "right". - Zadeklaruj
local facing: Direction = "left". - 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
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