我想将一组函数组合成一个函数。给定多个函数,该方法应返回一个函数,该函数是输入函数的组合。
一种方法是
public static <T> Function<T,T> composeAll(Function<T,T>... functions){
Function<T,T> res = Function.identity();
for(Function<T,T> f : functions){
res = res.compose(f);
}
return res;
}
我希望通过首先创建函数数组流来实现相同的结果。但我不知道该怎么做
public static <T> Function<T,T> composeAll2 (Function<T,T>... functions){
Function<T,T> res = Function.identity();
Arrays.stream(functions). ???
return res;
}
我现在打问号的最后一个方法应该输入什么代码?
最佳答案
您可以使用 Stream#reduce()
操作:
public static <T> Function<T,T> composeAll2 (Function<T,T>... functions){
return Arrays.stream(functions).reduce(Function.identity(), Function::compose);
}
这与您编写函数的迭代方式相同。
关于java - 使用流组成函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47755408/