lodash-contrib
Version:
The brass buckles on lodash's utility belt
342 lines (229 loc) • 6.3 kB
Markdown
### function.arity
> Functions which manipulate the way functions work with their arguments.
--------------------------------------------------------------------------------
#### arity
**Signature:** `_.arity(numberOfArgs:Number, fun:Function)`
Returns a new function which is equivalent to `fun`, except that the new
function's `length` property is equal to `numberOfArgs`. This does **not** limit
the function to using that number of arguments. It's only effect is on the
reported length.
```javascript
function addAll() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum = sum + arguments[i];
}
return sum;
}
addAll.length
// => 0
var addAllWithFixedLength = _.arity(2, addAll);
addAllWithFixedLength.length
// => 2
addAllWithFixedLength(1, 1, 1, 1);
// => 4
```
--------------------------------------------------------------------------------
#### binary
**Signature:** `_.binary(fun:Function)`
Returns a new function which accepts only two arguments and passes these
arguments to `fun`. Additional arguments are discarded.
```javascript
function addAll() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum = sum + arguments[i];
}
return sum;
}
var add2 = _.binary(addAll);
add2(1, 1);
// => 2
add2(1, 1, 1, 1);
// => 2
```
--------------------------------------------------------------------------------
#### curry
**Signature:** `_.curry(func:Function[, reverse:Boolean])`
Returns a curried version of `func`. If `reverse` is true, arguments will be
processed from right to left.
```javascript
function add3 (x, y, z) {
return x + y + z;
}
var curried = _.curry(add3);
// => function
curried(1);
// => function
curried(1)(2);
// => function
curried(1)(2)(3);
// => 6
```
--------------------------------------------------------------------------------
#### curry2
**Signature:** `_.curry2(fun:Function)`
Returns a curried version of `func`, but will curry exactly two arguments, no
more or less.
```javascript
function add2 (a, b) {
return a + b;
}
var curried = _.curry2(add2);
// => function
curried(1);
// => function
curried(1)(2);
// => 3
```
--------------------------------------------------------------------------------
#### curry3
**Signature:** `_.curry3(fun:Function)`
Returns a curried version of `func`, but will curry exactly three arguments, no
more or less.
```javascript
function add3 (a, b, c) {
return a + b + c;
}
var curried = _.curry3(add3);
// => function
curried(1);
// => function
curried(1)(2);
// => function
curried(1)(2)(3);
// => 6
```
--------------------------------------------------------------------------------
#### curryRight
**Signature:** `_.curryRight(func:Function)`
**Aliases:** `_.rCurry`
Returns a curried version of `func` where arguments are processed from right
to left.
```javascript
function divide (a, b) {
return a / b;
}
var curried = _.curryRight(divide);
// => function
curried(1);
// => function
curried(1)(2);
// => 2
curried(2)(1);
// => 0.5
```
--------------------------------------------------------------------------------
#### curryRight2
**Signature:** `_.curryRight2(func:Function)`
**Aliases:** `_.rcurry2`
Returns a curried version of `func` where a maxium of two arguments are
processed from right to left.
```javascript
function concat () {
var str = "";
for (var i = 0; i < arguments.length; i++) {
str = str + arguments[i];
}
return str;
}
var curried = _.curryRight2(concat);
// => function
curried("a");
// => function
curried("a")("b");
// => "ba"
```
--------------------------------------------------------------------------------
#### curryRight3
**Signature:** `_.curryRight3(func:Function)`
**Aliases:** `_.rcurry3`
Returns a curried version of `func` where a maxium of three arguments are
processed from right to left.
```javascript
function concat () {
var str = "";
for (var i = 0; i < arguments.length; i++) {
str = str + arguments[i];
}
return str;
}
var curried = _.curryRight3(concat);
// => function
curried("a");
// => function
curried("a")("b");
// => function
curried("a")("b")("c");
// => "cba"
```
--------------------------------------------------------------------------------
#### fix
**Signature:** `_.fix(fun:Function[, value:Any...])`
Fixes the arguments to a function based on the parameter template defined by
the presence of values and the `_` placeholder.
```javascript
function add3 (a, b, c) {
return a + b + c;
}
var fixedFirstAndLast = _.fix(add3, 1, _, 3);
// => function
fixedFirstAndLast(2);
// => 6
fixedFirstAndLast(10);
// => 14
```
--------------------------------------------------------------------------------
#### quaternary
**Signature:** `_.quaternary(fun:Function)`
Returns a new function which accepts only four arguments and passes these
arguments to `fun`. Additional arguments are discarded.
```javascript
function addAll() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum = sum + arguments[i];
}
return sum;
}
var add4 = _.quaternary(addAll);
add4(1, 1, 1, 1);
// => 4
add4(1, 1, 1, 1, 1, 1);
// => 4
```
--------------------------------------------------------------------------------
#### ternary
**Signature:** `_.ternary(fun:Function)`
Returns a new function which accepts only three arguments and passes these
arguments to `fun`. Additional arguments are discarded.
```javascript
function addAll() {
var sum = 0;
for (var i = 0; i < arguments.length; i++) {
sum = sum + arguments[i];
}
return sum;
}
var add3 = _.ternary(addAll);
add3(1, 1, 1);
// => 3
add3(1, 1, 1, 1, 1, 1);
// => 3
```
--------------------------------------------------------------------------------
#### unary
**Signature:** `_.unary(fun:Function)`
Returns a new function which accepts only one argument and passes this
argument to `fun`. Additional arguments are discarded.
```javascript
function logArgs() {
console.log(arguments);
}
var logOneArg = _.unary(logArgs);
logOneArg("first");
// => ["first"]
logOneArg("first", "second");
// => ["first"]
```
--------------------------------------------------------------------------------