J'ai vu un lambda défini comme une fonction anonyme et comme une référence à une fonction. Javascript prend en charge à la fois:
setTimeout(function(){ /* an anonymous function */ }, 100)
var f = function(){ /* function ref */ }
C'est là que JS tire une grande partie de sa puissance et de sa flexibilité. Java prend en charge la première dans une certaine mesure (implémentations d'interface anonyme), mais pas la dernière - voir ci-dessous pour la mise à jour de Java 8.
Je ne sais pas laquelle (ou les deux) de ces éléments est la bonne définition d'un lambda.
JS n'est certainement pas le premier langage à prendre en charge ces fonctionnalités. Partant de mémoire, je pense que son petit discours dit que les amateurs de langues sont toujours ravis de soutenir les lambdas.
BTW: En Java, une classe anonyme est généralement utilisée pour passer une définition de classe à la volée pour un argument (beaucoup utilisé en swing). Quelque chose comme ça (de mémoire, non compilé):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
// Handle having the method called in my special widget way
}
}
)
Mettre à jour
Java, à partir de 8, est désormais officiellement un langage Lambda.
Vous pouvez maintenant utiliser la syntaxe suivante:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Source du code