Menu
Coddy logo textTech

Funkcje jako wartości pierwszej klasy

Część sekcji Logika i przepływ programu ścieżki Lua w Coddy. Lekcja 12 z 54.

W Lua funkcje to coś więcej niż tylko bloki kodu wykonujące zadania. Są wartościami, z którymi można postępować tak jak z każdym innym typem danych. Oznacza to, że możesz pracować z funkcjami tak samo jak z liczbami, ciągami znaków lub tabelami.

Możesz przechowywać funkcję w zmiennej:

local greet = function()
    print("Hello!")
end

greet()  -- Wynik: Hello!

Tutaj funkcja jest przypisana do zmiennej greet i możesz ją wywoływać tak jak każdą zwykłą funkcję. Otwiera to wiele możliwości w zakresie strukturyzowania kodu.

Funkcje można również przekazywać jako argumenty do innych funkcji. Jest to szczególnie przydatne, gdy chcesz, aby jedna funkcja korzystała z zachowania zdefiniowanego w innej:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Wynik: Hello from a function!

W tym przykładzie executeAction otrzymuje funkcję jako parametr i ją wywołuje. Funkcja sayHello jest przekazywana tak samo, jak przekazujesz liczbę lub ciąg znaków.

Funkcje mogą nawet zwracać inne funkcje. Dzięki temu możesz tworzyć funkcje dynamicznie na podstawie określonych warunków lub parametrów:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Wynik: 10
challenge icon

Wyzwanie

Łatwy

Napisz funkcję applyOperation, która przyjmuje a, b i operation, a następnie zwraca wynik zastosowania funkcji operacji do tych dwóch liczb.

Parametr operation to tabela zawierająca funkcję, która zostanie wywołana z argumentami a i b.

Logika:

  • Pobierz funkcję z tabeli operation za pomocą klucza "func"
  • Wywołaj tę funkcję z argumentami a i b
  • Zwróć wynik

Parametry:

  • a (liczba): Pierwsza liczba
  • b (liczba): Druga liczba
  • operation (tabela): Tabela zawierająca funkcję zapisaną pod kluczem "func"

Zwraca: Wynik wywołania funkcji operacji z argumentami a i b (liczba)

Spróbuj swoich sił

function applyOperation(a, b, operation)
    -- Wpisz kod tutaj
end
quiz iconSprawdź się

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator Lua online