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 ) );
}
Did you find this page helpful?