2013-05-31 79 views
47

Biểu thức Lambda đang được thêm vào trong Java 8. Tôi muốn hiểu tại sao điều này lại quan trọng. Điều gì có ý nghĩa đối với một lập trình viên Java chưa được tiếp xúc với các thành ngữ lập trình hàm? Điều đó có nghĩa là tôi có thể viết mã thực hiện tốt hơn hoặc cân bằng một cách ồ ạt hoặc nó chỉ làm cho mã ít tiết hơn. Hay tất cả.Biểu thức Java Lambda

+0

Tôi đã tham gia một lớp về tổ chức ngôn ngữ lập trình, cách giáo sư của tôi nói với tôi là bạn có thể làm cho mã của bạn lười biếng. Bạn cũng có, tôi vẫn không hiểu điều này, có thể "lên đỉnh núi" không? Nhưng thực sự, nó làm tôi bối rối, không thể chờ đợi để xem câu trả lời. –

+0

Hmm một cách sử dụng tôi có thể thấy là thời gian chạy lựa chọn và tạo ra các chức năng. Giả sử bạn làm điều gì đó cho một đối tượng và tùy thuộc vào những gì bạn đã làm, bạn cần truyền nó cho một trong 100 phương thức hoặc một phương thức với 100 ifs, với lambdas bạn có thể viết một phương thức một cách nhanh chóng mà không có ifs. – arynaq

+5

'E = hc/λ' !!! Cmon man !! – Tdorno

Trả lời

38

Oracle đã có tutorial về chủ đề. Nó liệt kê một số trường hợp sử dụng tuyệt vời.

Trước khi tôi tìm thấy liên kết, tôi sẽ nói rằng biểu thức lambda cho phép bạn chuyển "hàm" sang mã. Vì vậy, bạn có thể viết mã dễ dàng hơn mà chúng tôi sử dụng để cần một mớ hỗn độn của các giao diện/lớp trừu tượng cho. Ví dụ, giả sử bạn có mã có một số vòng lặp hoặc logic điều kiện phức tạp hoặc luồng công việc. Tại một bước bạn muốn làm một cái gì đó khác nhau. Với các biểu thức lambda, bạn chỉ có thể vượt qua trong đó "một cái gì đó khác nhau." Đọc hướng dẫn mặc dù. Nó rất rõ ràng.

+0

Tôi thấy bối rối vì bạn sử dụng cụm từ - "* Trước khi tôi tìm thấy liên kết, tôi sẽ nói rằng *". Vì vậy, sau khi bạn tìm thấy liên kết Oracle, ý kiến ​​/ suy nghĩ của bạn đã thay đổi? Tôi có nghĩa là bạn đã suy nghĩ sai hoặc "ít" và sau khi đọc liên kết mà bạn nhận ra có nhiều hơn với nó. Lý do tôi hỏi là với tôi những gì đã đề cập trước đó là đúng và ý chính của liên kết đó, vì vậy tôi muốn biết nếu tôi không nhận ra tiềm năng đầy đủ của các biểu thức lambda. – hagrawal

+0

Tôi có nghĩa đó là ngôn ngữ của tôi. Các hướng dẫn cụm từ nó tốt hơn –