6.1 从普通函数迈向高阶函数
从1到某个数求和,用Java会怎么做?我们写出的方法可能是这样的:
// Java code
public int sum(int number) {
int result = 0;
for(int i = 1; i <= number; i++) {
result += i;
}
return result;
}
现在,又要对这个范围内的偶数和奇数分别计数,怎么做呢?我们可以复制之前的代码,修改方法体去完成新任务。使用普通函数,这就是我们能做到的最好情况了,但是,这会产生重复代码,降低可重用性。
在Scala里,我们可以把一个匿名函数传递给另一个函数,由这个函数对范围进行循环。这样的话,传入不同的逻辑就可以完成不同的任务。这种以其他函数为参数的函数称为高阶函数。它们减少了重复的代码,增强了可重用性,也让代码变得简洁。我们来看一下在Scala里如何创建它们。