Menu
Coddy logo textTech

Anonyme Funktionen

Teil des Abschnitts Logic & Flow der Lua-Journey von Coddy — Lektion 13 von 54.

Da Sie nun verstehen, dass Funktionen in Variablen gespeichert und weitergegeben werden können, gibt es eine noch prägnantere Art, sie zu schreiben. Anstatt einer Funktion immer einen Namen zu geben, können Sie sie direkt dort erstellen, wo Sie sie benötigen – diese werden als anonyme Funktionen bezeichnet.

Eine anonyme Funktion ist einfach eine Funktion ohne Namen. Sie definieren sie mit dem function-Schlüsselwort, gefolgt von ihren Parametern und ihrem Rumpf:

function(a, b)
    return a + b
end

Dies erzeugt einen Funktionswert, der sofort verwendet werden kann. Anonyme Funktionen sind besonders nützlich, wenn Funktionen als Argumente an andere Funktionen übergeben werden. Erinnern Sie sich an das Beispiel zur benutzerdefinierten Sortierung 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 für table.sort() erstellt. Dies macht den Code kompakter und behält die Sortierlogik genau dort, wo sie verwendet wird.

challenge icon

Aufgabe

Einfach

Schreiben Sie 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.

Verwenden Sie table.insert() mit einem Ansatz für anonyme Funktionen, um die Zahlen zu filtern. Erstellen Sie die Filterlogik inline, ohne eine separate benannte Funktion zu definieren.

Logik:

  • Erstellen Sie eine leere Ergebnistabelle
  • Iterieren Sie durch die Tabelle numbers
  • Verwenden Sie für jede Zahl eine anonyme Funktion, um zu prüfen, ob sie den Schwellenwert überschreitet
  • Wenn die Prüfung true zurückgibt, fügen Sie die Zahl der Ergebnistabelle hinzu
  • Geben Sie die gefilterte Ergebnistabelle zurück

Parameter:

  • numbers (table): Eine Tabelle im Listenstil, die numerische Werte enthält
  • 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)

Spickzettel

Eine anonyme Funktion ist eine Funktion ohne Namen, die mit dem Schlüsselwort function definiert wird, gefolgt von Parametern und einem Funktionskörper:

function(a, b)
    return a + b
end

Anonyme Funktionen sind nützlich, wenn Funktionen als Argumente übergeben werden, da die Logik direkt dort bleibt, wo sie verwendet wird:

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)

Dies erstellt die Vergleichsfunktion direkt als Argument für table.sort(), was den Code kompakter macht.

Probier es selbst

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 Logic & Flow