Kształty a luźne tabele
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 40 z 73.
Masz teraz dwa sposoby pracy z tabelami rekordów: luźny sposób, którego zawsze używałeś w Lua, oraz zadeklarowane kształty. Warto się na chwilę zatrzymać i sprawdzić, co każdy z nich daje.
Luźna tabela akceptuje wszystko. Ta elastyczność ma swoją cenę: jeśli błędnie wpiszesz nazwę pola (user.nmae), po cichu otrzymasz nil; jeśli zapomnisz o polu, błąd ujawni się znacznie później, w czasie działania programu, w kodzie, który jako pierwszy trafi na brakujące pole:
local user = {name = "Ana", age = 20}
print(user.nmae) -- tabela bez ścisłej kontroli: wypisuje nil bez ostrzeżeniaZadeklaruj kształt, a te błędy zostaną przeniesione z czasu działania programu na etap edycji. W chwili wpisania błędnej nazwy kontroler ją wykryje, edytor może podpowiadać nazwy pól, a deklaracja type pełni też funkcję dokumentacji zawartości tabeli:
type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ błąd typu: nie znaleziono klucza 'nmae' w UserJeśli znasz TypeScript, pamiętaj, że Luau nie ma słowa kluczowego interface: type obsługuje każdy kształt. Nie ma też „scalania deklaracji”: zadeklarowanie dwóch typów o tej samej nazwie w tym samym zakresie jest błędem, więc każdy kształt ma dokładnie jedną definicję.
Kształty w Luau są strukturalne: każda tabela z odpowiednimi polami o właściwych typach pasuje, niezależnie od tego, gdzie i jak została utworzona. Luźne tabele też mają swoje zastosowanie: szybkie skrypty i naprawdę dynamiczne dane nie wymagają zadeklarowanego kształtu. Jednak w przypadku danych przekazywanych między funkcjami kształt pozwala wykryć błędy, zanim ich naprawienie stanie się kosztowne.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
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ów3Typowane 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 mapy6Typowanie kształtów tabel
Adnotacje kształtów w miejscuAliasy typów dla kształtówWłaściwości opcjonalneKształty a luźne tabeleRozszerzanie kształtówDodawanie metod do kształtówSelf i metody z dwukropkiemPodsumowanie: definiowanie kształtów tabelPoćwicz samodzielnie: Kompilator Luau online