naryFunction
Create a function that invokes a provided function with a specified number of arguments.
Usage
var naryFunction = require( '@stdlib/utils/nary-function' );
naryFunction( fcn, arity[, thisArg] )
Returns a function
that invokes a provided function with a specified number of arguments.
function sum() {
var s;
var i;
s = 0;
for ( i = 0; i < arguments.length; i++ ) {
s += arguments[ i ];
}
return s;
}
var fcn = naryFunction( sum, 2 );
var out = fcn( -1, -2, 3 );
// returns -3
To set the this
context when invoking the provided function, provide a thisArg
.
function Foo() {
this.scalar = 1;
}
Foo.prototype.sum = function sum() {
var s;
var i;
s = 0;
for ( i = 0; i < arguments.length; i++ ) {
s += arguments[ i ] * this.scalar;
}
return s;
};
var ctx = {
'scalar': 3
};
var foo = new Foo();
var fcn = naryFunction( foo.sum, 2, ctx );
var out = fcn( 1, 2, 3 );
// returns 9
Notes
- The returned function always invokes the wrapped function with a specified number of arguments, even when the returned function is provided fewer arguments. The value for the missing arguments is equal to
undefined
.
Examples
var filledarrayBy = require( '@stdlib/array/filled-by' );
var naryFunction = require( '@stdlib/utils/nary-function' );
function fill( i ) {
return i;
}
function sum() {
var s;
var i;
s = 0;
for ( i = 0; i < arguments.length; i++ ) {
s += arguments[ i ];
}
return s;
}
// Create a data array:
var x = filledarrayBy( 10, 'float64', fill );
// Compute cumulative sums...
var f;
var i;
for ( i = 0; i <= x.length; i++ ) {
f = naryFunction( sum, i );
console.log( 'sum_%d = %d', i, f.apply( null, x ) );
}