Java8中函数和双函数的链接
Java-8带有Java8中函数和双函数的链接,java,lambda,java-8,functional-programming,Java,Lambda,Java 8,Functional Programming,Java-8带有函数和双函数。我们如何链接多个函数或双函数实例。使一个函数的输出变成另一个函数的输入。我创建了简单函数和双函数来说明 import java.util.function.BiFunction; import java.util.function.Function; class FunctionSample1 { public static void main(String[] args) { BiFunction<Integer, Integer
函数
和双函数
。我们如何链接多个函数
或双函数
实例。使一个函数的输出变成另一个函数的输入。我创建了简单函数和双函数来说明
import java.util.function.BiFunction;
import java.util.function.Function;
class FunctionSample1 {
public static void main(String[] args) {
BiFunction<Integer, Integer, Integer> mul = (x, y) -> {
return x * y;
};
BiFunction<Integer, Integer, Integer> div = (x, y) -> {
return x / y;
};
BiFunction<Integer, Integer, Integer> sum = (x, y) -> {
return x + y;
};
BiFunction<Integer, Integer, Integer> sub = (x, y) -> {
return x - y;
};
Function<Integer, Integer> mulfunc = (y) -> {
return y * 9;
};
Function<Integer, Integer> divfunc = (y) -> {
return y / 2;
};
Function<Integer, Integer> sumfunc = (y) -> {
return y + 89;
};
Function<Integer, Integer> subdunc = (y) -> {
return y - 2;
};
}
}
import java.util.function.BiFunction;
导入java.util.function.function;
类函数示例1{
公共静态void main(字符串[]args){
双函数mul=(x,y)->{
返回x*y;
};
双函数div=(x,y)->{
返回x/y;
};
双函数和=(x,y)->{
返回x+y;
};
双功能子功能=(x,y)->{
返回x-y;
};
函数mulfunc=(y)->{
返回y*9;
};
函数divfunc=(y)->{
返回y/2;
};
函数sumfunc=(y)->{
返回y+89;
};
函数类型nc=(y)->{
返回y-2;
};
}
}
我如何链接它们,无论是使用
compose
还是,然后使用获得结果?函数和BiFunction
都有一种方法可以让您构建组合函数
int k = mulfunc.andThen(divfunc).andThen(sumfunc).andThen(subdunc).apply(6);
System.out.println(k);
BiFunction.andThen(Function) = BiFunction
Function.andThen(Function) = Function
比如说,
BiFunction<Integer, Integer, Integer> mul = (x, y) -> x * y;
Function<Integer, Integer> times2 = x -> x * 2;
Function<Integer, Integer> minus1 = x -> x - 1;
// r = ((3 * 3) * 2) - 1
Integer r = mul.andThen(times2).andThen(minus1).apply(3, 3);
// r2 = (3 - 1) * 2
Integer r2 = times2.compose(minus1).apply(3);
比如说,
BiFunction<Integer, Integer, Integer> mul = (x, y) -> x * y;
Function<Integer, Integer> times2 = x -> x * 2;
Function<Integer, Integer> minus1 = x -> x - 1;
// r = ((3 * 3) * 2) - 1
Integer r = mul.andThen(times2).andThen(minus1).apply(3, 3);
// r2 = (3 - 1) * 2
Integer r2 = times2.compose(minus1).apply(3);
一个函数能不能然后()
aBiFunction
?@AustinSchäfer否,函数返回一个值,BiFunction
取两个值呢?如果我们有像默认双函数composeFirst(函数f){return(v,u)->apply(f.apply(v,u);}这样的方法,那就有意义了
和默认双功能组件第二(函数f){return(t,v)->apply(t,f.apply(v));}
在BiFunction
界面中,但不幸的是,我们没有。请不要只发布代码作为答案,而是说明此代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。