Higher Order Function in Java
刚做完Proj1a,有几天没更新,今天看到这感觉不写个笔记自己可能很快就忘记了,所以写一个吧!
我们为什么需要higher order
Python
首先,我们先看一段Python的代码:
def tenX(x):
return 10*x
def do_twice(f, x):
return f(f(x))
print(do_twice(tenX, 2))
正确执行上述指令后,运行结果应如下图所示:
结果为(10*2)*10 = 200
Java
在Java的世界中,肯定没有Python这么简便,我们需要使用分层管理的方式来实现上述效果。
首先,我们来实现第一层:
def tenX(x):
return 10*x
我们创建一个.java文件,并将其命名为TenX.java,其功能用于实现输入整数乘10后返回。
public class TenX implements IntUnaryFunction{
public int apply(int x){
return 10 * x;
}
}
接下来,我们开始实现第二层:
def do_twice(f, x):
return f(f(x))
print(do_twice(tenX, 2))
再创建一个.java文件,将其命名为HalfDemo.java,在这里实现第二层的嵌套以及打印功能:
public class HalfDemo{
public static int do_twice(IntUnaryFunction f, int x){
return f.apply(f.apply(x));
}
public static void main(String[] args){
IntUnaryFunction tenX = new TenX(); //we need to instantiate the TenX() method
System.out.println(do_twice(tenX, 2));
}
}
执行后结果如下图所示: