如何使用带闭包的Java 8编写支持以 作为函数参数并返回函数值的方法?Lambda表达式和更高阶函数
回答
在Java Lambda API中,主类是java.util.function.Function。
您可以像使用所有其他引用一样对此接口使用引用:将其作为变量进行创建,并将其作为计算结果返回等等。
这里是很简单的例子,这可能会帮助您:
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);
}
如果您需要通过更多然后1点的参数,请大家看看到compose
方法,但它的使用是相当棘手。
一般来说,从我的观点来看,Java中的闭包和lambdas基本上是语法糖,而且它们似乎并不具备函数式编程的所有功能。
非常感谢您的答复!你知道是否适用这个:add(8)(10)因为这样做很无聊:add(8).apply(10) – xdevel2000 2013-03-04 13:15:24
不幸的是,似乎是不允许的,至少 - 现在 – n1ckolas 2013-03-04 13:31:06
n1ckolas,对不起,我没有找到任何撰写方法...我在哪里可以寻找一个例子来写一个带有更多参数的函数? – xdevel2000 2013-03-04 14:21:00
- 1. 模板参数推导/替换使用lambda表达式失败,高阶函数
- 2. Python:列表函数和lambda表达式
- 3. 高阶正则表达式
- 4. lambda是一种高阶函数吗?
- 5. 更高阶的reduce()函数
- 6. Lambda表达式与程序式函数
- 7. 高阶函数和短形式
- 8. Lambda表达式作为函数参数
- 9. 结合函子和lambda表达式
- 10. 高阶函数和ST
- 11. 高阶函数
- 12. 高阶函数
- 13. Java函数的Lambda表达式实现
- 14. 函数定义VS Lambda表达式
- 15. 带聚合函数的lambda表达式
- 16. Scheme,高阶函数和curried函数
- 17. Lambda函数/阶段范围
- 18. 函数表达式可以转换为Lambda表达式
- 19. 使用高阶函数和Lambda微积分在Haskell中操作列表
- 20. lambda表达式和的putIfAbsent
- 21. Lambda表达式和搜索
- 22. Lambda表达式和RVO
- 23. 谓词和lambda表达式
- 24. C#Lambda表达式和NHibernate
- 25. lambda表达式和词典
- 26. Proguard的和lambda表达式
- 27. Lambda表达式和InvokeOperation
- 28. @PrepareForTest,@RunWith和lambda表达式
- 29. Delegate.Combine和lambda表达式
- 30. C#lambda表达式和IComparer
[爪哇草案规范的闭包(Neal Gafter和Peter von derAhé)](http://javac.info/) – 2013-03-04 10:13:06
@ Quoi该网站涉及多年前去世的提案。有关Java 8实现的进展,请参阅http://lambdafaq.org – 2013-03-04 12:12:38
@MauriceNaftalin谢谢 – 2013-03-04 15:38:04