Menu
Coddy logo textTech

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) .. "!"
end

Parametry 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.

challenge icon

Wyzwanie

Łatwy

Przepisz 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
end

Czyli: 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: przyjmuje text: string, zwraca ciąg znaków "Message: [text]" (typ zwracanej wartości string)
  • isPositive: przyjmuje num: number, zwraca true, jeśli liczba jest większa od 0, w przeciwnym razie false (typ zwracanej wartości boolean)

Wywołaj i wypisz, każde w osobnym wierszu:

  1. subtract(10, 3)
  2. createMessage("Hello World")
  3. isPositive(-5)
  4. 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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online