Я бачив лямбду, яку визначають як анонімну функцію та як посилання на функцію. Javascript підтримує обидва:
setTimeout(function(){ }, 100)
var f = function(){ }
Тут JS отримує багато своєї потужності та гнучкості. Java певною мірою підтримує перше (реалізації анонімного інтерфейсу), але не друге - див. Нижче оновлення для Java 8.
Мені незрозуміло, що (або і те, і інше) є правильним визначенням лямбди.
JS, безумовно, не перша мова, яка підтримує ці функції. Виходячи з пам’яті, я думаю, що це мало того, що ентузіасти завжди захоплюються підтримкою лямбд.
BTW: У Java анонімний клас зазвичай використовується для передачі визначення класу на льоту для аргументу (часто використовується в swing). Щось на зразок цього (з пам'яті, не скомпільовано):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
}
}
)
Оновлення
Ява, станом на 8, зараз є офіційно мовою лямбда.
Тепер ви можете використовувати такий синтаксис:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Джерело коду