我想在我的安卓应用程序中使用函数式编程,但由于Java8不可用,我决定使用Guava Library。但是显然在Guava Library中没有REDUCE聚集体。如果有人能解释为什么会这样,我会很好奇,但我需要的是一个变通方法。
如何在Guava中模拟REDUCE/DROP函数式编程特性?例如,如何在FluentInterface上计算和或平均值,而无需自己从头开始编写代码(这是函数式编程的主要原则之一,不是吗?)。
如果你已经在Android中使用了另一个库,也请让我知道。
发布于 2014-10-21 07:16:34
Guava不支持这一点,因为您需要构建的匿名类最终要比传统的命令式for循环冗长得多。Guava故意只提供了一组有限的函数式编程风格的特性:详细信息请参见https://github.com/google/guava/wiki/FunctionalExplained#Caveats。
让我们想象一下Guava确实提供了这个。它必须看起来像这样
FluentIterable.from(integers).foldr(
new BiFunction<Integer, Integer, Integer>() {
@Override Integer sum(Integer a, Integer b) {
return a + b;
}
}, 0);
...versus...
int sum = 0;
for (int value : integers) {
sum += value;
}
第二个版本需要的样板文件要少得多。在语言中没有lambdas的情况下,这是不值得的。
https://stackoverflow.com/questions/26475897
复制相似问题