柯里化与函数合成

作者: JaniceZD | 来源:发表于2020-07-18 17:25 被阅读0次

    柯里化

    柯里化(currying)指的是将一个多参数的函数拆分成一系列函数,每个拆分后的函数都只接受一个参数(unary)。

    柯里化前:

    //柯里化前
    function add (a, b) {
      return a + b;
    }
    
    add(1, 1) // 2
    

    改写成柯里化函数形式:

    function add (a) {
      return function (b) {
        return a + b;
      }
    }
    // 或者采用箭头函数写法
    const add = x => y => x + y;
    
    const f = add(1);
    f(2) // 3
    

    即,拆分成了两个函数,每个函数接受一个参数。
    代码中,函数 add 只接受一个参数 a,返回一个函数 f 。函数 f 也只接受一个参数 b

    函数合成

    const compose = f => g => x => f(g(x));
    
    const f = compose (x => x * 4) (x => x + 3);
    f(2) // 20
    

    代码中,compose 就是一个函数合成器,用于将两个函数合成一个函数。

    柯里化与函数合成有着密切的联系。前者用于将一个函数拆成多个函数,后者用于将多个函数合并成一个函数。

    参考连接

    相关文章

      网友评论

        本文标题:柯里化与函数合成

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