首页 > 解决方案 > 求咖喱函数的总和?

问题描述

var curry = function (func) {
    return function (a) {
        return function (b) {
            return function (c) {
                return function (d) {
                    return function (e) {
                        return func (a, b, c, d, e);
                    }
                }
            }
        }
    }
}

var getSum=curry(a+b+c+d+e);
console.log(getSum(15)(20)(25)(30)(35));

到目前为止,这是我的代码,但它说 a 没有定义,我不知道如何修复它。如果我使用 Math.max 执行此操作,它可以工作,但我怎样才能实现相同的目标,但使用总和而不是最大值?

标签: javascript

解决方案


通过定义一个对其参数求和的函数,就像Math.max找到其参数的最大值一样:

const curry = function (func) {
    return function (a) {
        return function (b) {
            return function (c) {
                return function (d) {
                    return function (e) {
                        return func (a, b, c, d, e);
                    };
                };
            };
        };
    };
};

const getSum = (...args) => {
    return args.reduce((sum, value) => sum + value, 0);
};

console.log(curry(getSum)(15)(20)(25)(30)(35));


推荐阅读