zoukankan      html  css  js  c++  java
  • Curry化函数

    <script>
            function fn(){
                var i,
                    rult = 0,
                    len = arguments.length;
                    for (i=0;i<len ;i++ )
                    {
                        rult += arguments[i];
                    }
                return rult;
            }
            function addfn(fn){//Curry化函数,方法扩展性更强
                var slice = [].slice,//存储方法
                    old_args = slice.call(arguments,1);//存储除fn外多余的参数
                return function(){
                    var new_args = slice.call(arguments);//存储新传入的参数
                    args = old_args.concat(new_args);//    拼接新数组和旧数组
                    return fn.apply(null,args);    //借用函数fn进行计算
                }
            }
            /*
                或者这样写
                console.log( addfn(fn,4,5,6,7)(5,1,2,3) )
            */
            var newadd = addfn(fn,4,5,6,7);
            console.log( newadd(5,1,2,3) );
    
        </script>

    何时使用Curry化

    当发现使用同一个函数,并且传入的参数都相同,可以使用先存入旧的参数在传入新的参数,旧参数和新参数拼接为一个数组,然后用方法进行运算

  • 相关阅读:
    poj1581
    poj3094
    poj2196
    poj1003
    poj2262
    poj1083
    poj3299
    poj2739
    poj1552
    js 获取元素高度和宽度
  • 原文地址:https://www.cnblogs.com/jokes/p/9524065.html
Copyright © 2011-2022 走看看