相关疑难解决方法(0)

编写一个curried javascript函数,可以调用任意次数,在最后一次函数调用中返回一个值

我目前正在处理个人时间的编程问题,要求我创建一个可以这种方式调用的javascript函数.

add(1) // 1
add(1)(2) // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10
add(1)(2)(3)(4)(5); // 15
Run Code Online (Sandbox Code Playgroud)

我弄清楚的是如何使它在最后一次调用时返回一个值.

例如,为了add(1)(2)工作,那么add(1)必须返回一个函数,但是根据指令add(1)自己调用时会返回1.

我假设你能克服这个问题的一种方法是弄清楚add函数被连续多少次被调用,但我想不出有办法实现这一点.有没有人有任何可以指出我正确方向的提示?

我读过这两篇文章(1,2上的功能柯里),我理解他们,但我不知道怎么做的参数个数可变打交道时钻营.

javascript functional-programming currying

5
推荐指数
1
解决办法
191
查看次数

卷曲一个带有无限参数的函数

使用ES5,你如何理解一个带有无限参数的函数.

function add(a, b, c) {
    return a + b + c;
}
Run Code Online (Sandbox Code Playgroud)

上面的函数只需要三个参数,但我们希望我们的curried版本能够获取无限参数.

因此,以下所有测试用例都应该通过:

var test = add(1);

test(2);     //should return 3
test(2,3);   //should return 6
test(4,5,6); //should return 16
Run Code Online (Sandbox Code Playgroud)

这是我提出的解决方案:

function add(a, b, c) {
    var args = Array.prototype.slice.call(arguments);

    return function () {
        var secondArgs = Array.prototype.slice.call(arguments);
        var totalArguments = secondArgs.concat(args);

        var sum = 0;

        for (i = 0; i < totalArguments.length; i++) {
            sum += totalArguments[0];
        }

        return sum;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,有人告诉我,它的风格并不是很"实用".

javascript functional-programming

4
推荐指数
3
解决办法
3809
查看次数

如何使函数 add 在 javascript 中工作 - console.log(add(2)(3)(4)) //9 不使用 valueof 或 toString

javascript问题添加无限数字,末尾没有空括号

我试过这个:

const Sum = function (a) {
        function innerFunc (b) {
            console.log("B", b)
            return b ? Sum(a + b) : a;
        }
    }
  console.log(Sum(2)(3)(4))
Run Code Online (Sandbox Code Playgroud)

但它适用于 console.log(Sum(2)(3)(4)()) 即最后一个空括号,有没有办法通过更改函数来做到这一点,以便没有空括号的控制台日志给出正确的结果结果,目前它抛出一个错误,指出 Sum 不是函数

javascript recursion currying

2
推荐指数
1
解决办法
136
查看次数

如何在JavaScript中构造无限fun()()()...()()?

只是一个奇怪的问题.我想创建一个可以处理无限"层"的函数?make add(2)(3),add(1)(2)(3)...(10)all works.

有任何想法吗?

javascript

-1
推荐指数
1
解决办法
164
查看次数