Ai đó có thể cung cấp một mô tả tốt về Lambda là gì không? Chúng tôi có một thẻ cho họ và họ đang có những bí mật của câu hỏi C #, nhưng tôi vẫn chưa tìm ra định nghĩa và lời giải thích tốt về những gì họ đang có ngay từ đầu.
Ai đó có thể cung cấp một mô tả tốt về Lambda là gì không? Chúng tôi có một thẻ cho họ và họ đang có những bí mật của câu hỏi C #, nhưng tôi vẫn chưa tìm ra định nghĩa và lời giải thích tốt về những gì họ đang có ngay từ đầu.
Câu trả lời:
Đóng cửa, lambdas và chức năng ẩn danh không nhất thiết phải giống nhau.
Hàm ẩn danh là bất kỳ hàm nào không có (hoặc ít nhất là cần) tên riêng của nó.
Bao đóng là một hàm có thể truy cập các biến nằm trong phạm vi từ vựng của nó khi nó được khai báo, ngay cả sau khi chúng đã giảm nằm ngoài phạm vi. Các hàm ẩn danh không nhất thiết phải là các hàm đóng, nhưng chúng có trong hầu hết các ngôn ngữ và trở nên ít hữu ích hơn khi không có.
Lambda không được định nghĩa rõ ràng như khoa học máy tính. Rất nhiều ngôn ngữ thậm chí không sử dụng thuật ngữ này; thay vào đó họ sẽ chỉ gọi chúng là hàm đóng hoặc hàm anon hoặc phát minh ra thuật ngữ của riêng mình. Trong LISP, lambda chỉ là một hàm ẩn danh. Trong Python, lambda là một hàm ẩn danh được giới hạn cụ thể cho một biểu thức duy nhất; bất cứ điều gì khác, và bạn cần một chức năng được đặt tên. Lambdas đóng cửa trong cả hai ngôn ngữ.
Còn được gọi là bao đóng hoặc hàm ẩn danh .. Tôi tìm thấy mô tả tốt nhất ở đây . Về cơ bản, khối mã nội tuyến có thể được chuyển làm đối số cho một hàm.
"Lambda" đề cập đến Giải tích Lambda hoặc một biểu thức lambda cụ thể. Giải tích Lambda về cơ bản là một nhánh của logic và toán học liên quan đến các hàm, và là cơ sở của các ngôn ngữ lập trình hàm .
~ William Riley-Land
Nó chỉ là một hàm ẩn danh được khai báo nội tuyến, thường được gán cho một đại biểu khi bạn không muốn viết một hàm chính thức.
Trong các ngôn ngữ như lisp / Scheme, chúng thường được truyền khá tự do dưới dạng các tham số hàm, nhưng thành ngữ trong C # thường thấy lambdas chỉ được sử dụng để đánh giá lười biếng các hàm, như trong linq hoặc để tạo mã xử lý sự kiện ngắn hơn một chút.
Không thực sự có một thứ gọi là 'lambda' trong lập trình. Nó phụ thuộc vào ngôn ngữ, v.v.
Nói tóm lại, thông thường một ngôn ngữ 'có lambdas' sử dụng thuật ngữ cho các hàm ẩn danh hoặc trong một số trường hợp, các hàm đóng. Như vậy, trong Ruby:
f = lambda { return "this is a function with no name" }
puts f.call
Theo các câu trả lời trước:
-Điều quan trọng về các hàm ẩn danh không phải là chúng không yêu cầu tên.
- Đóng cửa là một khái niệm riêng biệt.
-Một bài báo wikipedia khổng lồ không làm cho điều này rõ ràng hơn.
Đây là câu trả lời của tôi trong 3 phần:
1. Lambda là một hàm cũng là một biểu thức. Đây là điều quan trọng.
2. Nhiều ngôn ngữ thực hiện cái gọi là "lambdas" thêm một số cú pháp để làm cho việc viết các hàm ngắn này dễ dàng hơn và nhanh hơn, nhưng điều này là không bắt buộc.
3. Một số ngôn ngữ có thể yêu cầu lambda không có tác dụng phụ . Đó sẽ là một lambda thuần túy hơn theo nghĩa chức năng.
Khi một hàm là một biểu thức, nó là một "công dân hạng nhất" trong ngôn ngữ. Tôi có thể làm tất cả những điều quan trọng với nó:
x = lambda(){ return "Hello World"; }
doit( 1, 2, lambda(a,b){ return a > b; }, 3 )
x = (lambda(a){ return a+1; }) + 5 // type error, not syntax error
(lambda(a,b){ print(a); log(b); })( 1, 2 ) // () is valid operator here
Được cắt từ wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Trong các ngôn ngữ lập trình như Lisp và Python, lambda là một toán tử được sử dụng để biểu thị các hàm ẩn danh hoặc các bao đóng, sau cách sử dụng phép tính lambda.