高阶函数有命名约定吗?即,返回其他功能的功能。
Javascript中的示例:
function onlyDivisibleBy(div) { // <-- higher order function
return function (n) {
return n % div === 0;
}
}
var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.filter(onlyDivisibleBy(3)); // [0, 3, 6, 9]
arr.filter(onlyDivisibleBy(5)); // [0, 5]
我倾向于按照上面的方式编写它:也就是说,在调用点进行了易读性优化(我读了上面的最后几行,即“过滤数组以使项只能被5整除”),但是在定义点从使用它的上下文来看,从其名称了解该函数的作用并不容易。
4
令人惊讶的是,我一直将术语“高阶函数”理解为表示接受另一个函数作为参数的函数。我并不是说您错了,我只是发现我们的理解上的差异很有趣。
—
拉切特
返回函数的@Racheet函数也是高阶的。他们可能两者都做。
—
itsbruce
@Racheet是个好点,并且与本示例非常相关:OP真正实现的是部分应用程序。可以将返回函数的许多(全部?不确定)用法看作部分应用程序。@ nickf: 这是实现示例的一种更干净的方法