Menu
Coddy logo textTech

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 opcjonalne

To 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")
end

Opcjonalne oznacza „może być nieobecne”. Nie oznacza to „dowolnego typu”. Jeśli email istnieje, nadal musi być ciągiem znaków.

challenge icon

Wyzwanie

Łatwy

Utwórz alias typu o nazwie User z:

  • name typu string (wymagane)
  • email typu string? (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:

  1. wywołaj printContact(alice)
  2. wywołaj printContact(bob)
  3. 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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online