Właściwości opcjonalne
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 39 z 73.
Nie każde pole jest zawsze obecne. W Lua odczyt brakującego pola tabeli po prostu zwraca nil, co jest elastyczne, ale właśnie tak pojawiają się błędy, takie jak attempt to concatenate a nil value.
Luau pozwala jawnie określić 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"} -- ✓ poprawnie, email jest opcjonalneTo znasz już ze zmiennych: string? to skrót od string | nil. Ta sama idea 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 sprawdzarka 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 to „dowolnego typu”. Jeśli email istnieje, nadal musi być ciągiem znaków.
Wyzwanie
ŁatwyUtwórz alias typu o nazwie User z:
nametypustring(wymagane)emailtypustring?(opcjonalne)
Utwórz dwóch użytkowników:
alice: name"Alice", email"alice@luau.dev"bob: name"Bob", bez emaila
Utwórz funkcję printContact, która przyjmuje User. Jeśli użytkownik ma email, wypisuje [name] - [email]; w przeciwnym razie wypisuje [name] - no email.
Następnie:
- wywołaj
printContact(alice) - wywołaj
printContact(bob) - wypisz wynik porównania
bob.email == nil
Spróbuj swoich sił
-- Napisz kod tutaj
-- 1) zdefiniuj typ User z opcjonalnym polem email
-- 2) utwórz alice (z adresem e-mail) i bob (bez adresu e-mail)
-- 3) napisz printContact ze sprawdzeniem wartości nil
-- 4) wywołaj ją dla obu użytkowników, a następnie wypisz bob.email == nil
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