Funkcje wariadyczne
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 29 z 80.
Używasz ... z Lua (varargs), aby pisać funkcje przyjmujące dowolną liczbę argumentów. Luau pozwala typować varargs, dzięki czemu sprawdzany jest typ każdego przekazanego argumentu:
function sum(...: number): number
local total = 0
for _, n in ipairs({...}) do
total = total + n
end
return total
end
print(sum(1, 2)) -- 3
print(sum(1, 2, 3, 4, 5)) -- 15...: number deklaruje, że każdy dodatkowy argument musi być liczbą: sum(1, "two") powoduje błąd typu. Narzędzia używane w czasie działania są Ci już znane:
{...}zbiera varargs w tablicę (tutaj{number})select("#", ...)zlicza, ile argumentów przekazano...można przekazać bezpośrednio do innej funkcji, np.math.max(...)
Podobnie jak w Lua, ... musi być ostatnim parametrem: zwykłe (typowane) parametry występują najpierw, a część wariadyczna zbiera pozostałe argumenty:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cWyzwanie
ŁatwyNapisz dwie funkcje, które przyjmują dowolną liczbę argumentów.
- Napisz
local function sumAll(...: number): number, która sumuje{...}za pomocąipairs. - Napisz
local function joinWords(separator: string, ...: string): string, która zwracatable.concat({...}, separator). - Wypisz
sumAll(5, 10, 15)ijoinWords("-", "apple", "banana", "cherry").
Naciśnij Uruchom kod: wynik pokazuje 30 i apple-banana-cherry.
Spróbuj swoich sił
-- 1) sumAll(...: number): number
-- 2) joinWords(separator: string, ...: string): string
-- 3) wypisz oba wyniki
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 niezwracające wartościParametry opcjonalneDomyślne wartości parametrówWartości domyślne dla typów BooleanFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Podstawowe typy
Number, String i BooleanTyp 'any': wyjście awaryjneTyp 'unknown'Nil i typy opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenia z podstawowych typów5Aliasy, 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
Typowane tabliceDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie i uzyskiwanie dostępu do mapIterowanie po tabelachTabele o mieszanej strukturzeOdczytywanie siatkiTworzenie siatkitable.unpackPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online