Typy przekroju
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 34 z 73.
Typy sumy mówią, że wartość jest jednego typu lub innego. Typy przecięcia wskazują odwrotną zależność: ampersand & łączy kształty tabel w typ, który ma wszystkie pola każdej części:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- Person musi mieć OBA pola
local user: Person = {
name = "Alice",
age = 25,
}Pomiń age, a weryfikator zgłosi błąd: przecięcie oznacza „i”, nigdy wybór dowolnych elementów. Dzięki temu możesz budować duże kształty z małych, wielokrotnego użytku części: definiuj wyspecjalizowane typy dla osobnych zagadnień, a następnie łącz je w razie potrzeby:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Ważna uwaga dotycząca Luau: łącz przez przecięcie kształty tabel (i typy funkcji), a nie typy proste. Coś takiego jak number & string nie ma sensu, ponieważ żadna wartość nie może być jednocześnie jednym i drugim. Gdy chcesz uzyskać „ten kształt plus tamten kształt”, & jest właściwym narzędziem.
Oczywiście w czasie działania Person to po prostu zwykła tabela Lua: przecięcie istnieje tylko na potrzeby weryfikatora.
Wyzwanie
ŁatwyUtwórz dwa aliasy kształtów: HasName z polem name: string oraz HasAge z polem age: number.
Utwórz Person jako przecięcie HasName & HasAge.
Utwórz HasEmail z polem email: string oraz Employee jako przecięcie wszystkich trzech: HasName & HasAge & HasEmail.
Zadeklaruj:
user: Personz imieniem"Alice"i wiekiem25worker: Employeez imieniem"Bob", wiekiem30i adresem e-mail"bob@company.com"
Utwórz displayPerson(person: Person): string, zwracającą "Name: [name], Age: [age]", oraz displayEmployee(employee: Employee): string, zwracającą "Name: [name], Age: [age], Email: [email]".
Wyświetl displayPerson(user) i displayEmployee(worker) w osobnych wierszach.
Spróbuj swoich sił
-- Napisz kod tutaj
-- type HasName = { name: string }, HasAge, HasEmail
-- type Person = HasName & HasAge
-- type Employee = HasName & HasAge & HasEmail
-- zadeklaruj user i worker, napisz dwie funkcje wyświetlające,
-- wyświetl wynik displayPerson(user) i displayEmployee(worker)
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 mapyPoćwicz samodzielnie: Kompilator Luau online