Menu
Coddy logo textTech

Parametry opcjonalne

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 25 z 73.

W zwykłym Lua zawsze można było pomijać argumenty: brakujące po cichu stawały się nil, a zapominanie o obsłużeniu tego było klasycznym źródłem błędów. Luau jawnie uwzględnia taką możliwość: dodaj ? do typu parametru, aby oznaczyć go jako opcjonalny.

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- Hello, Ada
print(greet("Ada", "Dr."))   -- Dr. Ada

string? oznacza „string lub nil”. Wywołujący mogą przekazać ciąg znaków albo całkowicie pominąć argument; parametry bez ? są wymagane, a narzędzie sprawdzające typy oznacza wywołania, w których je pominięto.

Wewnątrz funkcji opcjonalny parametr może mieć wartość nil, więc sprawdź go przed użyciem: if title then ... end to standardowy wzorzec. Pomiń sprawdzenie i połącz nil z ciągiem znaków, a otrzymasz ten sam błąd środowiska uruchomieniowego, który Lua zawsze zgłaszał; narzędzie sprawdzające typy ostrzeże cię wcześniej.

challenge icon

Wyzwanie

Łatwy

Utwórz funkcję o nazwie createUserProfile, która przyjmuje username: string (wymagany) i displayName: string? (opcjonalny), zwracającą string:

  • Gdy podano oba, zwróć: "Profile: [displayName] (@[username])"
  • Gdy podano tylko nazwę użytkownika, zwróć: "Profile: @[username]"

Utwórz funkcję o nazwie calculateDiscount, która przyjmuje price: number (wymagany) i membershipLevel: string? (opcjonalny), zwracającą number:

  • Gdy podano poziom członkostwa, zwróć cenę obniżoną o 10% (pomnóż przez 0.9)
  • W przeciwnym razie zwróć cenę bez zmian

Wywołaj i wypisz, każde w osobnym wierszu:

  1. createUserProfile("john_doe", "John Doe")
  2. createUserProfile("jane_smith")
  3. calculateDiscount(100, "premium")
  4. calculateDiscount(75)

Spróbuj swoich sił

-- Napisz tutaj kod
-- createUserProfile(username: string, displayName: string?): string
-- calculateDiscount(price: number, membershipLevel: string?): number
-- następnie wypisz cztery wyniki
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