Tôi đã thấy một lambda được định nghĩa là một hàm ẩn danh và là một tham chiếu đến một hàm. Javascript hỗ trợ cả hai:
setTimeout(function(){ /* an anonymous function */ }, 100)
var f = function(){ /* function ref */ }
Đây là nơi JS nhận được rất nhiều sức mạnh và tính linh hoạt của nó. Java hỗ trợ cái đầu tiên ở một mức độ nào đó (triển khai giao diện ẩn danh), nhưng không hỗ trợ cái sau - xem bên dưới để biết bản cập nhật cho Java 8.
Tôi không rõ cái nào (hoặc cả hai) trong số này là định nghĩa thích hợp của lambda.
JS chắc chắn không phải là ngôn ngữ đầu tiên hỗ trợ các tính năng này. Đi từ trí nhớ, tôi nghĩ rằng nó nhỏ mà những người đam mê ngôn ngữ luôn say mê hỗ trợ lambdas.
BTW: Trong Java, một lớp ẩn danh thường được sử dụng để truyền một cách nhanh chóng định nghĩa lớp cho một đối số (được sử dụng rất nhiều trong swing). Một cái gì đó như thế này (từ bộ nhớ, không được biên dịch):
someGuiContainer(new WidgetInterface()
{
public void importantMethodToDefine(){
// Handle having the method called in my special widget way
}
}
)
Cập nhật
Java, kể từ 8, bây giờ chính thức là một ngôn ngữ Lambda.
Bây giờ bạn có thể sử dụng cú pháp sau:
MathOperation addition = (int a, int b) -> a + b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
Nguồn mã