zoukankan      html  css  js  c++  java
  • javascript的currying函数

     curring的概念将函数式编程的概念和默认参数以及可变参数结合在一起.一个带n个参数,curried的函数固化第一个参数为固定参数,并返回另一个带n-1个参数的函数对象,分别类似于LISP的原始函数car和cdr的行为。currying能泛化为偏函数应用(partial function application, PFA),p这种函数将任意数量(顺序)的参数的函数转化为另一个带剩余参数的函数对象。
          function curry(f) {
            if (f.length == 0) return f;
            function iterate(args) {
              if (args.length >= f.length)
                return f.apply(null, args);
              return function () {
                return iterate(args.concat(Array.prototype.slice.call(arguments)));
              };
            }
            return iterate([]);
          }
          function mean3(a, b, c) { return (a + b + c) / 3; }
      
          var curriedMean3 = curry(mean3);
          alert(curriedMean3(1)(2, 3)); // => 2
          alert(curriedMean3(1)(2)(3));//空括号无效
          alert(curriedMean3()(1)()(2)()(3)); // => 2
          alert(curriedMean3(1, 2)(3, 4)); // => 2 (第四个参数无效)

  • 相关阅读:
    RecycleView点击事件
    RecycleView 的使用 (CardView显示每个小项)
    wine
    git
    ubuntu 装机
    tar 压缩为多个文件&解压缩
    make error: makefile:4: *** missing separator. Stop
    python中的PEP是什么?怎么理解?(转)
    博客园如何转载别人的文章(转)
    信息熵
  • 原文地址:https://www.cnblogs.com/peng14/p/2949229.html
Copyright © 2011-2022 走看看