美文网首页前端
柯里化函数实现

柯里化函数实现

作者: 企鹅的技术笔记 | 来源:发表于2019-03-12 16:57 被阅读0次

    柯里化函数实现

    柯里化函数的实现实质上是一个收集参数的过程, 也许柯里化的内涵及应用场景理解起来比较困难, 但是实现是相对简单的

    const curry = (fn) => {
      /**
       * 
       * @param {number} rest_num 剩余需要收集的参数数目 
       * @param {array} args_list 参数列表
       */
      const _c = (rest_num, args_list) => {
        if (rest_num <= 0) {
          return fn(...args_list);
        }
        return (...args) => _c(rest_num - args.length, [...args_list, ...args])
      }
      return _c(fn.length, []);
    }
    
    // example
    const plus = (a, b, c, d) => a + b + c + d;
    const curry_plus = curry(plus);
    curry_plus(1, 2, 3, 4) // 10
    curry_plus(1)(2, 3, 4) // 10
    curry_plus(1)(2)(3, 4) // 10
    

    如上述示例, curry函数会返回一个 _c, 在使用者每一次调用 curry_plus 的时候会让 _c 传入的 rest_num 都减去相应的值, 当不再需要收集参数时, 就返回结果

    相关文章

      网友评论

        本文标题:柯里化函数实现

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