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 ) ); }
See Also
@stdlib/utils/mask-arguments: create a function that invokes a provided function according to an argument mask.@stdlib/utils/pick-arguments: create a function that invokes a provided function with specified arguments.