接受可变数量的链式调用的函数,如`add(1)(2)(3)(4)`

时间:2017-07-18 09:07:13

标签: javascript

我想实现一个可以接受任意数量链接调用的函数,比如。

add(1)(2); // 3
add(1)(2)(3); // 6
add(1)(2)(3)(4); // 10

如果我按照以下方式实施,则只会接受1st来电。

function add(n){
  return function add_impl(a)
  {
   return n + a;
  };
}

我需要按照以下方式编写它以接受2nd调用。

function add(n){
  return function add_impl(a)
  {
   return function add_impl2(b)
   {
     return n + a + b;
   }
  }
}

我想使这个通用,以便可以传递任意数量的参数。

2 个答案:

答案 0 :(得分:2)

你可以这样做,但你最后还是需要一个空的()让函数知道你的计算完成了。



var a = 0;
function add(n) {
  if (arguments.length) {
    a += n;
    return add;
  }
  return a;
}

var x = add(2)(3)(4)(5);
console.log(x());




答案 1 :(得分:0)

你可以这样做,

int foo(int... args) {
    int total = 0;
    for (int arg : args) {
        total = total + arg;
    }
    return total;
}