curry

_.curry(func, [arity=func.length])

创建一个函数,该函数接收一个或多个 func 的参数。 当该函数被调用时,如果 func 所需要传递的所有参数都被提供,则直接返回 func 所执行的结果。 否则继续返回该函数并等待接收剩余的参数。 可以使用 func.length 强制需要累积的参数个数。

这个 _.curry.placeholder 的值,默认是以 _ 作为附加部分参数的占位符。

注意: 这个方法不会设置 "length" 到 curried 函数上。

参数

  1. func (Function)

    需要 curry 的函数

  2. [arity=func.length] (number)

    需要提供给 func 的参数数量

返回值 (Function)

返回 curry 后的函数

示例

var abc = function(a, b, c) {
  return [a, b, c];
};

var curried = _.curry(abc);

curried(1)(2)(3);
// => [1, 2, 3]

curried(1, 2)(3);
// => [1, 2, 3]

curried(1, 2, 3);
// => [1, 2, 3]

// 使用了占位符
curried(1)(_, 3)(2);
// => [1, 2, 3]