Ich habe ein Lambda gesehen, das als anonyme Funktion und als Referenz auf eine Funktion definiert ist. Javascript unterstützt beide:
setTimeout(function(){ /* an anonymous function */ }, 100)
var f = function(){ /* function ref */ }
Hier bekommt JS viel von seiner Kraft und Flexibilität. Java unterstützt die erste bis zu einem gewissen Grad (anonyme Schnittstellenimplementierungen), nicht jedoch die letztere - siehe unten für das Update für Java 8.
Mir ist unklar, welches (oder beide) davon die richtige Definition eines Lambda ist.
JS ist definitiv nicht die erste Sprache, die diese Funktionen unterstützt. Aus dem Gedächtnis heraus denke ich, dass Sprachbegeisterte immer davon schwärmen, Lambdas zu unterstützen.
Übrigens: In Java wird normalerweise eine anonyme Klasse verwendet, um eine Klassendefinition im laufenden Betrieb für ein Argument zu übergeben (häufig in Swing verwendet). So etwas (aus dem Gedächtnis, nicht kompiliert):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
// Handle having the method called in my special widget way
}
}
)
Aktualisieren
Java ist ab 8 offiziell eine Lambda-Sprache.
Sie können jetzt die folgende Syntax verwenden:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Codequelle