java.util.function包Function家族很庞大,共25个函数接口。但是Java 库只提供单个参数和两个参数的函数映射接口。如果需要更多参数,如三元函数,可以自己编写,还可以采用柯里化技术先获得BiFunction对象。
package chap2.closure.currying;
import java.util.function.BiFunction;
/**
* 三元函数
*
*
* @author (your name)
* @version (a version number or a date)
*/
public interface TernaryFunction<T,U,V,R>{
R apply(T t,U u,V v);
default public BiFunction<T,U,R> get(V v){
return (t,u)->this.apply(t,u,v);
}
}
如上,定义多少元的函数都是非常简单地事情。只要n-1元的函数存在,也可以方便地编写降低一元的柯里化函数。
测试代码如下:
package chap2.closure.currying;
import java.util.function.Function;
import java.util.function.BiFunction;
import static yqj2065.util.Print.*;
/**
* Write a description of class Deme here.
*
* @author yqj2065
* @version (a version number or a date)
*/
public class Deme{
public static int add(int x,int y){return x+