Tôi có thể viết bằng Java 8 bằng bao đóng để hỗ trợ phương thức lấy làm đối số một hàm và hàm trả về làm giá trị?Biểu thức Lambda và hàm bậc cao hơn
Trả lời
Trong Java Lambda API, lớp chính là java.util.function.Function.
Bạn có thể sử dụng tham chiếu đến giao diện này giống như cách bạn thực hiện với tất cả các tham chiếu khác: tạo biến đó làm biến, trả về kết quả tính toán và cứ như vậy.
Dưới đây là ví dụ khá đơn giản mà có thể giúp bạn:
public class HigherOrder {
public static void main(String[] args) {
Function<Integer, Long> addOne = add(1L);
System.out.println(addOne.apply(1)); //prints 2
Arrays.asList("test", "new")
.parallelStream() // suggestion for execution strategy
.map(camelize) // call for static reference
.forEach(System.out::println);
}
private static Function<Integer, Long> add(long l) {
return (Integer i) -> l + i;
}
private static Function<String, String> camelize = (str) -> str.substring(0, 1).toUpperCase() + str.substring(1);
}
Nếu bạn cần phải vượt qua hơn sau đó 1 tham số, xin hãy xem vào compose
phương pháp, nhưng việc sử dụng của nó là khá khó khăn.
Nói chung từ đóng cửa ý kiến của tôi và lambdas trong Java về cơ bản là cú pháp-đường, và họ dường như không có tất cả các khả năng lập trình chức năng.
cảm ơn bạn rất nhiều vì câu trả lời! Bạn có biết nếu nó được áp dụng này: thêm (8) (10) vì làm điều này là rất nhàm chán: thêm (8) .apply (10) – xdevel2000
Thật không may nó dường như không được phép, ít nhất - bây giờ – n1ckolas
n1ckolas, xin lỗi , Tôi không tìm thấy bất kỳ phương pháp soạn thảo ... nơi tôi có thể tìm một ví dụ để viết một chức năng với các thông số hơn? – xdevel2000
- 1. Các hàm bậc cao hơn trong C
- 2. Macro clojure tạo hàm bậc cao hơn từ hàm
- 3. Thống nhất bậc cao hơn
- 4. Biểu thức Java Lambda
- 5. Biểu thức luồng và lambda
- 6. biểu thức lambda và tham số ngoài
- 7. C# biểu thức lambda và IComparer
- 8. C#: Không có chuyển đổi ngầm giữa 'biểu thức lambda' và 'biểu thức lambda'?
- 9. VB.NET Biểu thức Lambda
- 10. Ghi biểu thức lambda
- 11. Generics Java - triển khai các hàm bậc cao hơn như bản đồ
- 12. Kết hợp Biểu thức Lambda
- 13. Biểu thức Lambda của .NET trong Java
- 14. Biên dịch biểu thức Lambda
- 15. KeyValuePair trong biểu thức Lambda
- 16. Gọi một bậc cao hơn F # chức năng từ C#
- 17. MethodInvoke đại biểu hoặc biểu thức lambda
- 18. Biểu thức Lambda trong Powershell
- 19. biểu thức lambda trong vb.net
- 20. Cú pháp biểu thức Lambda
- 21. GroupBy trong biểu thức lambda
- 22. C# biểu thức lambda và đánh giá lười biếng
- 23. ngoại lệ từ lambda biểu thức
- 24. Biểu diễn đại diện của hàm lambda
- 25. Đối sánh mẫu cho biểu thức lambda
- 26. Chức năng trả về biểu thức lambda
- 27. "tự" trong biểu thức lambda python
- 28. chức năng bậc cao trong C++ 11
- 29. So sánh PropertyInfo từ Type.GetProperties() và biểu thức lambda
- 30. Khi không sử dụng biểu thức lambda
[Đóng cửa cho đặc tả dự thảo Java (bởi Neal Gafter và Peter von der Ahé)] (http://javac.info/) –
Trang web @Quoi That liên quan đến các đề xuất đã chết cách đây nhiều năm. Để biết tiến trình thực hiện Java 8, hãy xem http://lambdafaq.org –
@MauriceNaftalin nhờ –