Functional Programming With Java 简明教程
Functional Programming with Java - Functions
函数是一段执行特定任务的语句块。函数接受数据,处理数据及返回结果。函数主要编写为支持可重用性概念。一个函数一旦编写完毕,可以轻松调用,而无需一遍又一遍地编写相同的代码。
函数式编程围绕头等函数、纯函数和高阶函数展开。
-
First Class Function 是使用字符串、数字等头等实体的函数,可以作为参数传递,可以返回,或分配给变量。
-
High Order Function 是可以接受一个函数作为参数和/或返回一个函数的函数。
-
Pure Function 是在执行时没有副作用的函数。
First Class Function
头等函数可以视为变量。这意味着它可以作为参数传递给函数,可以由函数返回,或者也可以分配给变量。Java 使用 lambda 表达式来支持头等函数。lambda 表达式类似于匿名函数。请看下面的示例 −
public class FunctionTester {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
SquareMaker squareMaker = item -> item * item;
for(int i = 0; i < array.length; i++){
System.out.println(squareMaker.square(array[i]));
}
}
}
interface SquareMaker {
int square(int item);
}
High Order Function
高阶函数要么接受一个函数作为参数,要么返回一个函数。在 Java 中,我们可以传递或返回 lambda 表达式来实现此类功能。
import java.util.function.Function;
public class FunctionTester {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
Function<Integer, Integer> square = t -> t * t;
Function<Integer, Integer> cube = t -> t * t * t;
for(int i = 0; i < array.length; i++){
print(square, array[i]);
}
for(int i = 0; i < array.length; i++){
print(cube, array[i]);
}
}
private static <T, R> void print(Function<T, R> function, T t ) {
System.out.println(function.apply(t));
}
}