Właściwości opcjonalne
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 41 z 80.
Nie każde pole jest zawsze obecne. W Lua odczyt brakującego pola tabeli zwraca po prostu nil, co jest elastyczne, ale właśnie tak mogą wkraść się błędy, takie jak attempt to concatenate a nil value.
Luau pozwala jawnie określić taki kształt: dodaj ? po typie pola, aby oznaczyć je jako opcjonalne:
type User = {
name: string, -- wymagane
email: string?, -- opcjonalne: string lub nil
}
local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ w porządku, email jest opcjonalnySpotkałeś się już z tym w przypadku zmiennych: string? to skrót od string | nil. Ta sama zasada dotyczy teraz poszczególnych pól kształtu.
Ponieważ opcjonalne pole może mieć wartość nil, musisz sprawdzić je przed użyciem. Klasyczny wzorzec Lua działa, a w trybie ścisłym moduł sprawdzający zawęża typ wewnątrz gałęzi:
if bob.email then
print(`email: {bob.email}`) -- tutaj email jest ciągiem znaków
else
print("no email on file")
endOpcjonalne oznacza „może być nieobecne”. Nie oznacza „dowolny typ”. Jeśli email istnieje, nadal musi być ciągiem znaków.
Wyzwanie
ŁatwyWyświetl kontakty, których adres e-mail może nie być podany.
- Napisz
type User = {name: string, email: string?}, następnielocal mia: User = {name = "Mia", email = "mia@coddy.tech"}orazlocal leo: User = {name = "Leo"}. - Napisz
local function printContact(user: User), która wyświetla`{user.name}: {user.email}`albo`{user.name}: no email`, jeśli adresu nie ma. - Wywołaj ją dla
mia, a następnieleo.
Naciśnij Uruchom kod: wynik pokazuje Mia: mia@coddy.tech i Leo: no email.
Spróbuj swoich sił
-- 1) typ User z opcjonalnym adresem email, a następnie mia i leo
-- 2) printContact(user: User) ze sprawdzeniem adresu email
-- 3) wywołaj ją dla mia, a następnie dla leo
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ów3Typowane 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