Java8中函数和双函数的链接

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

Java-8带有
函数
双函数
。我们如何链接多个
函数
双函数
实例。使一个函数的输出变成另一个函数的输入。我创建了简单函数和双函数来说明

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);

一个
函数能不能
然后()
a
BiFunction
?@AustinSchäfer否,
函数返回一个值,
BiFunction
取两个值呢?如果我们有像
默认双函数composeFirst(函数f){return(v,u)->apply(f.apply(v,u);}这样的方法,那就有意义了
默认双功能组件第二(函数f){return(t,v)->apply(t,f.apply(v));}
BiFunction
界面中,但不幸的是,我们没有。请不要只发布代码作为答案,而是说明此代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。