5.1 概念
我们前面讲了很多,同时也讲到了由函数构建函数的概念。
在函数式编程中,函数是构建大型函数或项目的最小单位,就像分子是独立存在而保持物质化学性质的最小粒子一样。
这里就不再重复地叙述这一观点了,掌握住思想,这就足够了。你所需要做的就是像切面包一样,把一个大型函数切割成你所需要的状态就足矣。
5.2 函数柯里化
函数柯里化的概念是在函数式编程语言 Haskell 中最基本的要素,在这一门语言中,就要使用柯里化,而在 JavaScript 中,这真的重要吗?
这也是我一直在问自己的问题,究竟什么样的地方,才能真正用到这一技术。为了技术而技术,将会导致一个问题,那就是更多的 BUG 以及更多的维护。
在团队协作中,将函数切割成无数的小函数,这有利于代码的维护和扩展,而柯里化呢?至少在 ES6 大行其道的现在,我看不出它的优势在何处。
那么什么是柯里化?
函数柯里化就是为每一个逻辑参数返回一个新函数。
多说无益,我们来举一个例子吧:
function add(x, y, z) {
return x + y +z;
}
这是我们平时的一般写法,那么柯里化是什么样子的呢?
function add(x) {
return function(y) {
return function(z) {
return x + y + z;
}
}
}
add(1)(2)(3); // 6
这么写是不是很丑呢?我不知道。但是这样会把问题弄得让人很费解不是吗,接着呃我是用 ES6 来重构上述代码:
const add = (x, y, z) => x + y + z;
const add = x => y => z => x + y + z;
你能说,柯里化后的代码就比上面的更好吗?这一点我真的不是很清楚。
到目前为止,我相信你应该知道了柯里化是什么,但是会不会用,为什么用需要想的很清楚。对于我来说,柯里化真的不适合 JavaScript 这门语言的大多数情况,这只会使得我们为了使用它而使用它。
还记得我们一开始就提到的吗?函数式编程为我们提供了一套思路,但这并不代表我们就要摒弃其它的东西。
真正的大师是选择合适的情况使用合适的手段,而高手则是为了炫技而陷入杀鸡焉用宰牛刀的境地中。
网友评论