Menu
Coddy logo textTech

Funkcje anonimowe

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

Skoro rozumiesz już, że funkcje można przechowywać w zmiennych i przekazywać, poznaj jeszcze zwięźlejszy sposób ich zapisywania. Zamiast zawsze nadawać funkcji nazwę, możesz utworzyć ją bezpośrednio tam, gdzie jej potrzebujesz. Nazywamy je funkcjami anonimowymi.

Funkcja anonimowa to po prostu funkcja bez nazwy. Definiujesz ją za pomocą słowa kluczowego function, po którym bezpośrednio podajesz jej parametry i treść:

function(a, b)
    return a + b
end

Tworzy to wartość funkcji, której można od razu użyć. Funkcje anonimowe są szczególnie przydatne, gdy przekazujesz funkcje jako argumenty do innych funkcji. Pamiętasz przykład niestandardowego sortowania z wcześniejszej części? Oto jak wygląda z funkcją anonimową:

local players = {
    {name = "Alice", score = 150},
    {name = "Bob", score = 200},
    {name = "Charlie", score = 175}
}

table.sort(players, function(a, b)
    return a.score > b.score
end)

Zamiast definiować osobną nazwaną funkcję do porównywania, funkcja jest tworzona bezpośrednio jako drugi argument funkcji table.sort(). Dzięki temu kod jest bardziej zwięzły, a logika sortowania znajduje się dokładnie tam, gdzie jest używana.

challenge icon

Wyzwanie

Łatwy

Napisz funkcję filterByThreshold, która przyjmuje numbers i threshold oraz zwraca nową tablicę zawierającą tylko liczby większe od progu.

Użyj table.insert() i podejścia z funkcją anonimową, aby filtrować liczby. Utwórz logikę filtrowania bezpośrednio, nie definiując osobnej funkcji nazwanej.

Logika:

  • Utwórz pustą tablicę wynikową
  • Przejdź przez tablicę liczb
  • Dla każdej liczby użyj funkcji anonimowej, aby sprawdzić, czy przekracza próg
  • Jeśli sprawdzenie zwróci true, dodaj liczbę do tablicy wynikowej
  • Zwróć przefiltrowaną tablicę wynikową

Parametry:

  • numbers (tablica): Tablica w formie listy zawierająca wartości liczbowe
  • threshold (liczba): Wartość minimalna (wyłączna) używana do filtrowania

Zwraca: Tablicę zawierającą tylko liczby większe od progu (tablica)

Spróbuj swoich sił

function filterByThreshold(numbers, threshold)
    -- Wpisz tutaj kod
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