柯里化(自学)

157 阅读1分钟

坚守初心

柯里化什么是柯里化

//就是利用递归的方式进行了使用

在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。这个技术由 Christopher Strachey 以逻辑学家 Haskell Curry 命名的,尽管它是 Moses Schnfinkel 和 Gottlob Frege 发明的。

简单直白::我输入一个参数之后返回一个函数,函数把之前的参数和下一次的参数整合到一起,但是返回的函数你还是可以传值(无限的传值使用)前面的传值就可以作为之后函数既有的条件。

//经典案例几个数相加(记得千万不要去背,要去理解) reduce知识点

        function sumNumber(...args){
        //这步是不管你输入的函数参数有多少都能够进行使用
            return  args.reduce((cer,nex)=>{
              return   cer + nex
            });

        }
        function curry(fn,...currArgs){
            console.log(currArgs)
        
            return function(...args){
                console.log(args)
                // if(fn.length<=[...args,...currArgs].length){
                //     return fn(...args,...currArgs);
                if(args.length===0){
                    return fn(...currArgs);
                }else{
                    return curry(fn, ...args,...currArgs);
                }
            }

        }
        let sum = curry(sumNumber);
        // console.log(sum(1,2)(3,4));
        console.log(sum(12)());