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

    什么是函数柯里化?实现 sum(1)(2)(3) 返回结果是1,2,3之和
    函数柯里化是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术

    function sum(a) {
        return function(b) {
            return function(c) {
                return a+b+c;
            }
        }
    }
    console.log(sum(1)(2)(3)); // 6
    引申:实现一个curry函数,将普通函数进行柯里化:
    function curry(fn, args = []) {
        return function(){
            let rest = [...args, ...arguments];
            if (rest.length < fn.length) {
                return curry.call(this,fn,rest);
            }else{
                return fn.apply(this,rest);
            }
        }
    }
    //test
    function sum(a,b,c) {
        return a+b+c;
    }
    let sumFn = curry(sum);
    console.log(sumFn(1)(2)(3)); //6
    console.log(sumFn(1)(2, 3)); //6
    
    
    
    Function curry(fn,args){
        var args = args || [];
        return function(){
            let _args = args.concat([…argunments]);
            if(fn.length>_args.length){
                return curry.apply(this,fn,_args)
            }
            else{
                return fn.apply(this,_args)
            }
        }
    }
  • 相关阅读:
    AtCoder Regular Contest 093
    AtCoder Regular Contest 094
    G. Gangsters in Central City
    HGOI 20190711 题解
    HGOI20190710 题解
    HGOI 20190709 题解
    HGOI 20190708 题解
    HGOI20190707 题解
    HGOI20190706 题解
    HGOI 20190705 题解
  • 原文地址:https://www.cnblogs.com/qdcnbj/p/11186892.html
Copyright © 2011-2022 走看看