Domyślne wartości parametrów
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 26 z 73.
Opcjonalne parametry pozostawiają Ci nil do obsłużenia. Często tak naprawdę potrzebujesz wartości zapasowej: „jeśli wywołujący nie podał wartości, przyjmij X”. Luau nie ma składni wartości domyślnej w sygnaturze (nie ma tam greeting: string = "Hello"); zamiast tego używa się klasycznego idiomu Lua, teraz z typami:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Hello, Alice
print(greet("Alice", "Howdy")) -- Cześć, AliceParametr jest oznaczony jako opcjonalny (string?), a pierwsza linia treści funkcji zastępuje nil wartością domyślną. Działa to dlatego, że nil jest fałszywe: nil or "Hello" daje w wyniku "Hello". Po tej linii kontroler typów wie, że greeting nie może już mieć wartości nil.
Jest tu pewien haczyk, który znasz z Lua: or zastępuje również false! W przypadku parametru boolean? zapis flag = flag or true po cichu nadpisałby jawnie podaną wartość false. Zamiast tego użyj jawnego sprawdzenia, czy wartość jest równa nil:
function ship(weight: number, expedited: boolean?): number
if expedited == nil then
expedited = false
end
-- ...
endWyzwanie
ŁatwyUtwórz funkcję o nazwie calculateTax, przyjmującą price: number (wymagany) oraz rate: number? z domyślną wartością 0.05. Zwróć kwotę podatku (price * rate) jako number.
Utwórz funkcję o nazwie formatGreeting, przyjmującą name: string (wymagany) oraz timeOfDay: string? z domyślną wartością "Hello". Zwróć "[timeOfDay], [name]!" jako string.
Utwórz funkcję o nazwie calculateShipping, przyjmującą weight: number, distance: number (oba wymagane) oraz expedited: boolean? z domyślną wartością false: w tym przypadku użyj jawnego sprawdzenia nil! Oblicz (weight * 0.5) + (distance * 0.1), a jeśli expedited ma wartość true, pomnóż wynik przez 2. Zwróć number.
Wywołaj i wypisz, każde w osobnym wierszu:
calculateTax(100)calculateTax(200, 0.08)formatGreeting("Alice")formatGreeting("Bob", "Good morning")calculateShipping(5, 100)calculateShipping(3, 50, true)
Spróbuj swoich sił
-- Napisz tutaj kod
-- calculateTax(price: number, rate: number?) -- domyślna wartość rate to 0.05
-- formatGreeting(name: string, timeOfDay: string?) -- domyślna wartość to "Hello"
-- calculateShipping(weight, distance, expedited: boolean?) -- domyślna wartość to false
-- następnie wypisz sześć wyników
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