Menu
CoddyTech

Anonyme Funktionen

Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 13 von 54.

Da du nun verstehst, dass Funktionen in Variablen gespeichert und weitergegeben werden können, gibt es eine noch knappere Möglichkeit, sie zu schreiben. Anstatt einer Funktion immer einen Namen zu geben, kannst du sie direkt dort erstellen, wo du sie brauchst. Diese werden anonyme Funktionen genannt.

Eine anonyme Funktion ist einfach eine Funktion ohne Namen. Du definierst sie mit dem Schlüsselwort function, auf das unmittelbar ihre Parameter und ihr Funktionskörper folgen:

function(a, b)
    return a + b
end

Dadurch wird ein Funktionswert erstellt, der sofort verwendet werden kann. Anonyme Funktionen sind besonders nützlich, wenn Funktionen als Argumente an andere Funktionen übergeben werden. Erinnerst du dich an das Beispiel für benutzerdefiniertes Sortieren von vorhin? So sieht es mit einer anonymen Funktion aus:

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)

Anstatt eine separate benannte Funktion für den Vergleich zu definieren, wird die Funktion direkt als zweites Argument an table.sort() übergeben. Dadurch wird der Code kompakter und die Sortierlogik bleibt genau dort, wo sie verwendet wird.

challenge icon

Aufgabe

Einfach

Schreibe eine Funktion filterByThreshold, die numbers und threshold entgegennimmt und eine neue Tabelle zurückgibt, die nur Zahlen enthält, die größer als der Schwellenwert sind.

Im Editor gibt es bereits einen Helfer, filter(list, keep): Er ruft für jeden Wert keep(value) auf und gibt eine neue Tabelle mit den Werten zurück, für die keep true zurückgegeben hat. Rufe filter auf und übergib die Prüfung als anonyme Funktion, die direkt im Aufruf geschrieben wird, so wie die Lektion eine Funktion an table.sort() übergibt. Speichere die Prüfung nicht in einer Variable und gib ihr keinen Namen.

Parameter:

  • numbers (table): Eine listenartige Tabelle mit numerischen Werten
  • threshold (number): Der Mindestwert (exklusiv) für die Filterung

Rückgabewert: Eine Tabelle, die nur Zahlen enthält, die größer als der Schwellenwert sind (table)

Probier es selbst

local function filter(list, keep)
    local result = {}
    for _, value in ipairs(list) do
        if keep(value) then
            table.insert(result, value)
        end
    end
    return result
end

function filterByThreshold(numbers, threshold)
    -- Schreibe hier den Code
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Programmablauf

Übe selbstständig: Online-Lua-Compiler