Tabellen transformieren: map, filter, reduce
Erstellen Sie funktionale Funktionen höherer Ordnung zur Transformation von Tabellen
Tabellen transformieren: map, filter, reduce ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 4 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.
Funktionale Muster in Lua
Lua verfügt über kein integriertes map/filter/reduce, doch diese Funktionen lassen sich mit Closures und generischen for-Schleifen leicht implementieren.
map: Jedes Element transformieren
map wendet eine Funktion auf jedes Element an und gibt eine neue Tabelle mit den Ergebnissen zurück.
local function map(t, fn)
local result = {}
for i, v in ipairs(t) do result[i] = fn(v) end
return result
end
local doubled = map({1,2,3}, function(x) return x * 2 end)
print(table.concat(doubled, ", ")) -- 2, 4, 6filter: Passende Elemente behalten
filter behält nur die Elemente, für die das Prädikat true zurückgibt.
local function filter(t, pred)
local result = {}
for _, v in ipairs(t) do
if pred(v) then result[#result+1] = v end
end
return result
end
local evens = filter({1,2,3,4,5}, function(x) return x % 2 == 0 end)
print(table.concat(evens, ", ")) -- 2, 4reduce: Zu einem einzelnen Wert zusammenfassen
reduce kombiniert Elemente von links nach rechts mithilfe eines Akkumulators.
local function reduce(t, fn, init)
local acc = init
for _, v in ipairs(t) do acc = fn(acc, v) end
return acc
end
local sum = reduce({1,2,3,4,5}, function(a,b) return a+b end, 0)
print(sum) -- 15Operationen verketten
Verketten Sie map, filter und reduce zu ausdrucksstarken Datenpipelines.
local nums = {1,2,3,4,5,6,7,8,9,10}
local result = reduce(
map(
filter(nums, function(x) return x % 2 == 0 end),
function(x) return x * x end
),
function(a,b) return a + b end, 0
)
print(result) -- 220forEach: Seiteneffekte
Ein forEach durchläuft Elemente, ohne eine neue Tabelle zu erstellen – nützlich für Seiteneffekte wie die Ausgabe auf der Konsole.
local function forEach(t, fn)
for i, v in ipairs(t) do fn(v, i) end
end
forEach({"a","b","c"}, function(v, i) print(i, v) end)flatMap: Abbilden und anschließend abflachen
flatMap bildet jedes Element auf eine Liste ab und verkettet anschließend alle Listen.
local function flatMap(t, fn)
local result = {}
for _, v in ipairs(t) do
for _, item in ipairs(fn(v)) do
result[#result+1] = item
end
end
return result
end
local expanded = flatMap({1,2,3}, function(x) return {x, x*10} end)zip: Zwei Tabellen kombinieren
zip paart Elemente aus zwei Tabellen und erstellt daraus eine Tabelle mit Paaren.
local function zip(a, b)
local result = {}
for i = 1, math.min(#a, #b) do
result[i] = {a[i], b[i]}
end
return result
end
local zipped = zip({1,2,3}, {"a","b","c"})Mit Wörterbuchtabellen arbeiten
Durchlaufen Sie Schlüssel-Wert-Tabellen mit pairs statt mit ipairs und sammeln Sie die Schlüssel-Wert-Paare.
local function mapValues(t, fn)
local result = {}
for k, v in pairs(t) do result[k] = fn(v) end
return result
end
local doubled = mapValues({x=1,y=2}, function(v) return v*2 end)Konzept der verzögerten Auswertung
Erwägen Sie bei großen Datenmengen verzögerte Iteratoren (Closures, die jeweils ein Element liefern), um das Erstellen großer Zwischentabellen zu vermeiden.
Leistungshinweis
Jede Anwendung von map oder filter erstellt eine neue Tabelleninstanz. Für enge Schleifen kann eine direkte Änderung effizienter sein, allerdings auf Kosten der Unveränderlichkeit und Klarheit.
reduce-Frage
Was gibt reduce({1,2,3,4}, function(a,b) return a+b end, 0) zurück?
Zusammenfassung: map/filter/reduce
map transformiert, filter selektiert und reduce fasst zusammen. Diese drei Funktionen höherer Ordnung bilden die Grundlage der funktionalen Datenverarbeitung in Lua.
Häufig gestellte Fragen
Ist die Lektion „Tabellen transformieren: map, filter, reduce“ kostenlos?
Ja — der vollständige Text von „Tabellen transformieren: map, filter, reduce“ 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 „Tabellen transformieren: map, filter, reduce“?
Erstellen Sie funktionale Funktionen höherer Ordnung zur Transformation von Tabellen 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 4 von 4.
Wie lange dauert die Lektion „Tabellen transformieren: map, filter, reduce“?
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
- table.sort mit Vergleichsfunktionen
- table.concat und table.move
- Tiefe und flache Kopien
- Tabellen transformieren: map, filter, reduce