Typowanie funkcji anonimowych
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 23 z 73.
W Lua funkcje są wartościami: zapisujesz je w zmiennych i przekazujesz dalej: local f = function(x) return x * 2 end. Te funkcje anonimowe (wyrażenia funkcyjne) przyjmują adnotacje typów dokładnie tak samo jak funkcje nazwane:
local double = function(x: number): number
return x * 2
end
local shout = function(text: string): string
return string.upper(text) .. "!"
endParametry otrzymują zapis name: type w nawiasach, a typ zwracany występuje po nawiasie zamykającym: jedyną różnicą w porównaniu z funkcją nazwaną jest to, że po słowie kluczowym function nie ma nazwy, a całe wyrażenie jest przypisywane do zmiennej.
Jeśli znasz JavaScript lub TypeScript, pamiętaj, że Luau nie ma funkcji strzałkowych. Nie istnieje składnia =>. Każde wyrażenie funkcyjne zapisuje się za pomocą function ... end, niezależnie od tego, czy jest długie, czy krótkie.
Po przypisaniu wywołujesz funkcję za pośrednictwem zmiennej tak jak każdą inną funkcję: double(21) zwraca 42, a sprawdzarka weryfikuje każde wywołanie na podstawie zapisanych przez Ciebie adnotacji.
Wyzwanie
ŁatwyPrzepisz tę nazwaną funkcję jako funkcję anonimową przechowywaną w zmiennej lokalnej, zachowując wszystkie adnotacje typów:
function subtract(a: number, b: number): number
return a - b
endCzyli: utwórz local subtract = function(...) ... end z takimi samymi typami parametrów i zwracanej wartości.
Następnie utwórz jeszcze dwie typowane funkcje anonimowe:
createMessage: przyjmujetext: string, zwraca ciąg znaków"Message: [text]"(typ zwracanej wartościstring)isPositive: przyjmujenum: number, zwracatrue, jeśli liczba jest większa od 0, w przeciwnym raziefalse(typ zwracanej wartościboolean)
Wywołaj i wypisz, każde w osobnym wierszu:
subtract(10, 3)createMessage("Hello World")isPositive(-5)isPositive(8)
Spróbuj swoich sił
-- Napisz kod tutaj
-- local subtract = function(a: number, b: number): number ... end
-- local createMessage = function(text: string): string ... end
-- local isPositive = function(num: number): boolean ... end
-- 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