Funktionen als Werte
Speichern und übergeben Sie Funktionen.
Funktionen als Werte ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Funktionen sind erstklassige Werte
In Lua sind Funktionen erstklassige Werte. Das bedeutet, dass eine Funktion einfach Daten ist: Sie können sie in einer Variablen speichern, an eine andere Funktion übergeben, zurückgeben und in einer Tabelle aufbewahren.
Diese eine Idee bildet die Grundlage der gesamten funktionalen Programmierung. Sobald Sie Funktionen wie Zahlen oder Zeichenketten behandeln, können Sie flexible, wiederverwendbare Werkzeuge erstellen.
Eine Funktion in einer Variablen speichern
Der Name, den Sie einer Funktion geben, ist eigentlich nur eine Variable, die den Funktionswert enthält. Sie können diesen Wert problemlos einer anderen Variablen zuweisen.
Beide Namen unten verweisen auf dieselbe zugrunde liegende Funktion. Daher führt der Aufruf eines der beiden Namen denselben Code aus.
local function greet(name)
return "Hello, " .. name
end
local hi = greet
print(greet("Ada"))
print(hi("Lin"))Anonyme Funktionen
Sie benötigen keinen Namen, um eine Funktion zu erstellen. Eine anonyme Funktion wird mit der Syntax function ... end geschrieben und direkt als Wert verwendet.
Eine solche Funktion einer lokalen Variablen zuzuweisen entspricht einer normalen Funktionsdefinition, wird aber inline geschrieben.
local square = function(x)
return x * x
end
print(square(5))
print(square(9))Funktionen als Argumente
Da Funktionen Werte sind, können Sie sie an andere Funktionen übergeben. Eine Funktion, die eine andere Funktion entgegennimmt, wird als Funktion höherer Ordnung bezeichnet.
apply weiß hier erst, welche Arbeit ausgeführt werden soll, wenn Sie der Funktion eine auszuführende Funktion übergeben.
local function apply(f, x)
return f(x)
end
local function double(n) return n * 2 end
print(apply(double, 10))
print(apply(function(n) return n + 1 end, 10))Eine Funktion zurückgeben
Eine Funktion kann eine andere Funktion zurückgeben. So können Sie Funktionen bei Bedarf erstellen und anhand der übergebenen Argumente konfigurieren.
multiplier erstellt unten jedes Mal eine völlig neue Funktion, die sich an den übergebenen Faktor erinnert.
local function multiplier(factor)
return function(x)
return x * factor
end
end
local triple = multiplier(3)
print(triple(4))
print(multiplier(10)(5))Closures erfassen Variablen
Wenn eine zurückgegebene Funktion eine lokale Variable der einschließenden Funktion verwendet, erfasst sie diese Variable. Die Kombination aus Funktion und erfassten Variablen wird als Closure bezeichnet.
Das erfasste factor bleibt erhalten, solange die Closure existiert, auch nachdem der äußere Aufruf beendet wurde.
local function counter()
local n = 0
return function()
n = n + 1
return n
end
end
local next = counter()
print(next())
print(next())
print(next())Funktionen in Tabellen
Tabellen können wie jeder andere Wert Funktionen enthalten. So erstellt Lua Module und Objekte: Eine Tabelle ordnet Namen Funktionswerten zu.
Sie können eine Funktion über ihren Schlüssel nachschlagen und aufrufen oder sogar eine Tabelle mit Operationen durchlaufen.
local ops = {
add = function(a, b) return a + b end,
sub = function(a, b) return a - b end
}
print(ops.add(2, 3))
print(ops["sub"](9, 4))Eine Tabelle mit Strategien
Wenn Sie Funktionen in einer Tabelle speichern, können Sie das Verhalten zur Laufzeit anhand eines Schlüssels auswählen. Dadurch ersetzen Sie lange if-else-Ketten durch eine übersichtliche Suche.
Wenn Sie die Operation anhand ihres Namens auswählen, bleibt der aufrufende Code kurz und lässt sich leicht um neue Schlüssel erweitern.
local dispatch = {
upper = string.upper,
lower = string.lower,
rev = string.reverse
}
local function run(name, s)
return dispatch[name](s)
end
print(run("upper", "lua"))
print(run("rev", "lua"))Callbacks
Ein Callback ist eine Funktion, die Sie übergeben, damit sie später aufgerufen werden kann. Die Standardbibliothek von Lua verwendet dieses Muster. Beispielsweise erwartet table.sort eine Vergleichsfunktion.
Der Callback bestimmt die Regel, während die Bibliothek die Schleife und das Umordnen übernimmt.
local nums = {5, 2, 9, 1}
table.sort(nums, function(a, b)
return a > b
end)
print(table.concat(nums, ", "))Funktionen haben eine Identität
Jeder Funktionswert ist ein eigenes Objekt. Zwei separate Funktionsliterale sind niemals gleich, selbst wenn sie denselben Code enthalten.
Eine einzelne Funktion, die in zwei Variablen gespeichert ist, wird dagegen als gleich betrachtet, da beide Namen auf denselben Wert verweisen.
local f = function() return 1 end
local g = function() return 1 end
local h = f
print(f == g)
print(f == h)Warum das wichtig ist
Wenn Sie Funktionen als Werte behandeln, können Sie allgemeine Werkzeuge einmal schreiben und sie mit den übergebenen Funktionen anpassen. Abbilden, Filtern, partielle Anwendung und Komposition beruhen alle darauf.
Der restliche Kurs baut praktische Muster auf erstklassigen Funktionen und Closures auf.
Schnelltest
Testen Sie Ihr Verständnis von erstklassigen Funktionen in Lua.
Zusammenfassung
Funktionen sind in Lua erstklassige Werte: Sie können sie in Variablen und Tabellen speichern, als Argumente übergeben und von anderen Funktionen zurückgeben.
Wenn eine zurückgegebene Funktion lokale Variablen der einschließenden Funktion erfasst, entsteht eine Closure. Diese Konzepte bilden die Grundlage für alle folgenden funktionalen Muster.
Häufig gestellte Fragen
Ist die Lektion „Funktionen als Werte“ kostenlos?
Ja — der vollständige Text von „Funktionen als Werte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Funktionen als Werte“?
Speichern und übergeben Sie Funktionen. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Funktionen als Werte“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Funktionen als Werte
- map, filter, reduce
- Partielle Anwendung
- Funktionen kombinieren