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)
            }
        }
    }
  • 相关阅读:
    食谱
    食谱
    食谱
    无题
    重要通知
    幼儿食谱
    安卓应用开发常用代码
    安卓开发环境搭建
    《浪潮之巅》读书笔记——第11章 摩托罗拉
    预制redis数据
  • 原文地址:https://www.cnblogs.com/qdcnbj/p/11186892.html
Copyright © 2011-2022 走看看