Funktionen als First-Class Values
Teil des Abschnitts Logic & Flow 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 Sie mit Funktionen auf die gleiche Weise arbeiten können wie mit Zahlen, Strings oder Tabellen.
Du kannst eine Funktion in einer Variablen speichern:
local greet = function()
print("Hello!")
end
greet() -- Ausgabe: Hello!Hier wird die Funktion der Variablen greet zugewiesen, und Sie können sie wie jede reguläre Funktion aufrufen. Dies eröffnet leistungsstarke Möglichkeiten für die Strukturierung Ihres Codes.
Funktionen können auch als Argumente an andere Funktionen übergeben werden. Dies 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 erhält executeAction eine Funktion als Parameter und ruft diese auf. Die Funktion sayHello wird genauso übergeben, wie man eine Zahl oder einen String übergeben würde.
Funktionen können sogar andere Funktionen zurückgeben. Dies ermöglicht es Ihnen, Funktionen dynamisch basierend auf bestimmten Bedingungen oder Parametern zu erstellen:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Ausgabe: 10Aufgabe
EinfachSchreiben Sie eine Funktion applyOperation, die a, b und operation entgegennimmt 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 Argumente aufgerufen wird.
Logik:
- Extrahieren Sie die Funktion aus der Tabelle
operationunter Verwendung des Schlüssels"func" - Rufen Sie diese Funktion mit
aundbals Argumente auf - Geben Sie das Ergebnis zurück
Parameter:
a(Zahl): Erste Zahlb(Zahl): Zweite Zahloperation(Tabelle): Eine Tabelle, die eine Funktion enthält, die unter dem Schlüssel"func"gespeichert ist
Rückgabewert: Das Ergebnis des Aufrufs der Operationsfunktion mit a und b (Zahl)
Spickzettel
In Lua sind Funktionen Werte erster Klasse, die in Variablen gespeichert, als Argumente übergeben und von anderen Funktionen zurückgegeben werden können.
Eine Funktion in einer Variablen speichern:
local greet = function()
print("Hello!")
end
greet() -- Ausgabe: Hello!Eine Funktion als Argument übergeben:
function executeAction(action)
action()
end
local sayHello = function()
print("Hello from a function!")
end
executeAction(sayHello) -- Ausgabe: Hello from a function!Eine Funktion von einer anderen Funktion zurückgeben:
function createMultiplier(factor)
return function(number)
return number * factor
end
end
local double = createMultiplier(2)
print(double(5)) -- Ausgabe: 10Probier es selbst
function applyOperation(a, b, operation)
-- Code hier schreiben
end
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittene Table-Iteration
Iterieren mit pairs()Iterieren mit ipairs()pairs() vs. ipairs()Zusammenfassung – Charakterbogen4Einführung in Metatables
Was ist eine Metatable?setmetatable & getmetatableDie __index-MetamethodeDie __newindex-MetamethodeDie __tostring-MetamethodeArithmetische Metamethoden Teil 1Arithmetische Metamethoden Teil 2Zusammenfassung – Schreibgeschützte Tabellen7Fortgeschrittene String-Manipulation
string.gsub() für ErsetzungenEinführung in String-Patternsstring.find()string.match()Iterieren mit string.gmatch()Rückblick – Log-File-Parser2Weitere Funktionen der Table-Bibliothek
table.concat()Tabellenerstellung & unpack()table.sort()Benutzerdefiniertes Sortieren mit FunktionenRückblick – Highscore-Tabelle3Fortgeschrittene Funktionskonzepte
Mehrere RückgabewerteVariadische Funktionen (...)Funktionen als First-Class ValuesAnonyme FunktionenWas ist eine Closure?Zusammenfassung – Einfacher Event Handler