Funktionen als Werte erster Klasse
Teil des Abschnitts Logik & Programmablauf der Lua-Journey von Coddy. Lektion 12 von 54.
In Lua sind Funktionen mehr als nur Codeblöcke, die Aufgaben ausführen. Sie sind Werte, die wie jeder andere Datentyp behandelt werden können. Das bedeutet, dass du mit Funktionen genauso arbeiten kannst wie mit Zahlen, Zeichenketten oder Tabellen.
Du kannst eine Funktion in einer Variable speichern:
local greet = function()
print("Hello!")
end
greet() -- Ausgabe: Hello!Hier wird die Funktion der Variablen greet zugewiesen, und du kannst sie wie jede gewöhnliche Funktion aufrufen. Das eröffnet leistungsstarke Möglichkeiten dafür, wie du deinen Code strukturierst.
Funktionen können auch als Argumente an andere Funktionen übergeben werden. Das ist besonders nützlich, wenn eine Funktion das in einer anderen definierte Verhalten verwenden soll:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Ausgabe: Hello from a function!In diesem Beispiel empfängt executeAction eine Funktion als Parameter und ruft sie auf. Die Funktion sayHello wird genauso übergeben, wie du eine Zahl oder einen String übergeben würdest.
Funktionen können sogar andere Funktionen zurückgeben. Dadurch kannst du Funktionen dynamisch auf Grundlage bestimmter Bedingungen oder Parameter erstellen:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Ausgabe: 10Aufgabe
EinfachSchreibe eine Funktion applyOperation, die a, b und operation übernimmt und das Ergebnis der Anwendung der Operationsfunktion auf die beiden Zahlen zurückgibt.
Der Parameter operation ist eine Tabelle, die eine Funktion enthält, die mit a und b als Argumenten aufgerufen wird.
Logik:
- Extrahiere die Funktion aus der Tabelle
operationmithilfe des Schlüssels"func" - Rufe diese Funktion mit
aundbals Argumenten auf - Gib das Ergebnis zurück
Parameter:
a(number): Erste Zahlb(number): Zweite Zahloperation(table): Eine Tabelle, die eine unter dem Schlüssel"func"gespeicherte Funktion enthält
Rückgabewert: Das Ergebnis des Aufrufs der Operationsfunktion mit a und b (number)
Probier es selbst
function applyOperation(a, b, operation)
-- Schreibe hier den Code
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmablauf
1Fortgeschrittene Tabelleniteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen2Weitere Funktionen der Tabellenbibliothek
table.concat()Tabellenkonstruktion & unpack()table.sort()Eigene Sortierung mit FunktionenRückblick – Highscore-Tabelle3Fortgeschrittene Funktionskonzepte
Mehrere Werte zurückgebenVariadische Funktionen (...)Funktionen als Werte erster KlasseAnonyme FunktionenWas ist eine Closure?Rückblick – Einfacher Event-HandlerÜbe selbstständig: Online-Lua-Compiler