第五章 由函数构建函数

作者: 549b968de8fa | 来源:发表于2017-03-26 14:50 被阅读70次

    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 这门语言的大多数情况,这只会使得我们为了使用它而使用它。

    还记得我们一开始就提到的吗?函数式编程为我们提供了一套思路,但这并不代表我们就要摒弃其它的东西。

    真正的大师是选择合适的情况使用合适的手段,而高手则是为了炫技而陷入杀鸡焉用宰牛刀的境地中。

    相关文章

      网友评论

        本文标题:第五章 由函数构建函数

        本文链接:https://www.haomeiwen.com/subject/ctlkottx.html