zoukankan      html  css  js  c++  java
  • 函数柯里化

    柯里化的好处是可以将多个参数的函数,先传部分参数调用得到一个缓存的函数,避免了重复模板。(利用闭包进行参数缓存,递归的收集参数),如下是一个简单的柯里化实现。具体使用柯里化可以使用loash,curry 工具函数
     
    可以实现无限的参数收集调用
    function curry(fn) {
        if (typeof fn != "function") {
            return;
        }
        var length = fn.length;
        function save(){

            var arg = Array.prototype.splice.call(arguments,0,arguments.length);

            if(arg.length==length){
                return fn.apply(null,arg)
            }
            else
            {
                return function (){
                    var args = Array.prototype.splice.call(arguments,0,arguments.length);
                   return save.apply(null,arg.concat(args));
                };
            }

        }

        return save;
    }
    var add1 = curry(function(a,b,c,d,e,f){
        return a+b+c+d+e+f;
    })
    console.log(add1(1,2,3,4,5,6));
    console.log(add1(1)(2)(3)(4)(5)(6))
  • 相关阅读:
    hdu 5101 Select
    hdu 5100 Chessboard
    cf B. I.O.U.
    cf C. Inna and Dima
    cf B. Inna and Nine
    cf C. Counting Kangaroos is Fun
    Radar Installation 贪心
    spfa模板
    Sequence
    棋盘问题
  • 原文地址:https://www.cnblogs.com/chillaxyw/p/12104143.html
Copyright © 2011-2022 走看看