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. Adastring? 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.
Wyzwanie
ŁatwyUtwó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:
createUserProfile("john_doe", "John Doe")createUserProfile("jane_smith")calculateDiscount(100, "premium")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
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