Funkcje wariadyczne
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 27 z 73.
Używałeś już ... (varargs) w Lua, aby pisać funkcje przyjmujące dowolną liczbę argumentów. Luau pozwala typować varargs, dzięki czemu każdy przekazywany argument jest sprawdzany:
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 działające w czasie wykonywania są ci już znane:
{...}zbiera varargs do tablicy (tutaj{number})select("#", ...)zlicza liczbę przekazanych argumentów...można przekazać bezpośrednio do innej funkcji, np.math.max(...)
Podobnie jak w Lua, ... musi być ostatnim parametrem: najpierw podaje się zwykłe (typowane) parametry, a zmienna liczba argumentów zbiera pozostałe:
function joinWords(separator: string, ...: string): string
return table.concat({...}, separator)
end
print(joinWords("-", "a", "b", "c")) -- a-b-cWyzwanie
ŁatwyUtwórz funkcję o nazwie sumAll, która przyjmuje dowolną liczbę argumentów typu number (...: number) i zwraca ich sumę jako number.
Utwórz funkcję o nazwie countValues, która przyjmuje dowolną liczbę argumentów typu string i zwraca ile ich przekazano, jako number: użyj select("#", ...).
Utwórz funkcję o nazwie joinWords, która przyjmuje wymagany argument separator: string, po którym następuje dowolna liczba argumentów typu string, i zwraca je połączone separatorem (użyj table.concat na {...}): typ zwracany string.
Wywołaj i wypisz, każde w osobnym wierszu:
sumAll(5, 10, 15)sumAll(1, 2, 3, 4, 5)countValues("a", "b", "c", "d")joinWords("-", "apple", "banana", "cherry")joinWords(" | ", "red", "green", "blue")
Spróbuj swoich sił
-- Napisz tutaj kod
-- sumAll(...: number): number -- przejdź pętlą przez {...}
-- countValues(...: string): number -- select("#", ...)
-- joinWords(separator: string, ...: string): string
-- następnie wypisz pięć 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