首页 > 其他 > 详细

偏函数与函数柯里化

时间:2021-08-09 23:30:29      阅读:31      评论:0      收藏:0      [点我收藏+]

偏函数

偏函数就是将一个函数的参数固定后包装为一个新函数,通过给新函数传入参数来调用原来的函数。

function add(a, b) {
    return a + b;
}

function addTwo(num) {
    return add(2, num);
}

console.log(addTwo(3));

有点类似设计模式里适配器模式。

柯里化

在偏函数的基础上加上了闭包的思想,通过在函数中返回一个函数来实现:

function curryAdd(num) {
    return function (onum) {
        return num + onum;
    };
}
let addTwo = curryAdd(2);
console.log(addTwo(3)); // 5

更高级的写法,这样固定了函数一个或多次传入的值的总数量

function curriedIt(func) {
    return function curriedFn(...arg) {
        if (arg.length < func.length) {
            //如果收集参数数量小于形参个数,返回一个新函数,用来调用自己
            return function (...newArg) {
                return curriedFn(...arg.concat(newArg));
            };
        }
        return func(...arg);
    };
}
let curriedAdd = curriedIt((a, b, c) => {
    return a + b + c;
});
console.log(curriedAdd(1)(2)(3));
console.log(curriedAdd(1, 2)(3));

偏函数与函数柯里化

原文:https://www.cnblogs.com/shaddollxz/p/15120324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!