我看到过一个lambda,它定义为匿名函数和对函数的引用。Javascript同时支持:
setTimeout(function(){ /* an anonymous function */ }, 100)
var f = function(){ /* function ref */ }
这就是JS获得其强大功能和灵活性的地方。Java在某种程度上支持前一种(匿名接口实现),但不支持后者 -有关Java 8的更新,请参见下文。
我不清楚这两个(或两者)是lambda的正确定义。
JS绝对不是支持这些功能的第一语言。从记忆的角度出发,我认为语言爱好者一直热衷于支持lambda的话题。
顺便说一句:在Java中,匿名类通常用于动态传递一个类定义作为参数(经常使用)。这样的事情(从内存中,未编译):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
// Handle having the method called in my special widget way
}
}
)
更新资料
从8开始,Java现在正式是Lambda语言。
现在,您可以使用以下语法:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
代码源