Lambda (Lambda-Ausdruck)
Kurz: Eine kompakte, namenlose Funktion, die direkt dort definiert wird, wo sie gebraucht wird — eine kürzere Alternative zu einer vollständigen benannten Methode oder anonymen Klasse für kurze, einmalig genutzte Logik.
Genauer: Lambda-Ausdrücke werden häufig als Argument an andere Funktionen übergeben, z. B. um festzulegen, wie eine Collection gefiltert, transformiert oder sortiert werden soll — statt einer eigenen benannten Vergleichsmethode reicht ein kurzer Ausdruck direkt an Ort und Stelle. Das Konzept stammt aus der funktionalen Programmierung, hat sich aber inzwischen in fast allen modernen Sprachen etabliert.
Im Detail
Der Name “Lambda” kommt aus dem Lambda-Kalkül, einem mathematischen Formalismus für Funktionen aus den 1930er-Jahren — in der Praxis heute einfach eine kompakte Kurzschreibweise für “eine Funktion, die ich nicht extra benennen und woanders definieren will”.
// klassische, benannte Funktion
function istGerade(zahl) {
return zahl % 2 === 0;
}
// dasselbe als Lambda/Arrow-Function, direkt an Ort und Stelle
zahlen.filter(zahl => zahl % 2 === 0)Lambda-Ausdrücke werden besonders häufig zusammen mit Funktionen höherer Ordnung eingesetzt — Funktionen, die selbst wieder eine Funktion als Argument entgegennehmen (z. B. filter, map, sort/sortBy). Statt für jeden einzelnen Anwendungsfall eine eigene, einmalig genutzte, benannte Funktion irgendwo im Code zu definieren, schreibt man die Logik direkt an der Stelle, wo sie gebraucht wird — das hält zusammengehörigen Code beieinander und reduziert “Namensmüll” für Funktionen, die sonst nirgendwo wiederverwendet werden.
Ein wichtiges Konzept, das oft zusammen mit Lambdas auftaucht, ist das Closure: Ein Lambda-Ausdruck kann auf Variablen aus seiner umgebenden Umgebung zugreifen, obwohl er selbst erst später (z. B. asynchron oder in einer anderen Funktion) ausgeführt wird:
function erstelleMultiplizierer(faktor) {
return zahl => zahl * faktor; // "merkt" sich faktor auch nach Rückgabe
}
verdoppeln = erstelleMultiplizierer(2)
verdoppeln(5) // ergibt 10Ein häufiger Stilfehler ist, Lambda-Ausdrücke für zu komplexe, mehrzeilige Logik zu verwenden — sie sind für kurze, selbsterklärende Ausdrücke gedacht; wird die Logik länger oder muss sie mehrfach wiederverwendet werden, ist eine benannte Methode fast immer die lesbarere Wahl.
Siehe auch: Anonymous Classes, Methods, Sorting