setter
Return an accessor function for setting an element in an indexed array-like object.
Usage
var setter = require( '@stdlib/array/base/setter' );
setter( dtype )
Returns an accessor function for setting an element in an indexed array-like object.
var arr = [ 1, 2, 3, 4 ];
var set = setter( 'generic' );
set( arr, 2, 10 );
var v = arr[ 2 ];
// returns 10
The returned accessor function accepts the following arguments:
- arr: input array.
- idx: element index.
- value: value to set.
Notes
- If provided an unsupported
dtype
, the function returns a default accessor function for accessing elements in any indexed array-like object; otherwise, the function returns an accessor function which should only be provided an array instance corresponding todtype
(e.g., ifdtype
is'float64'
, the returned accessor function should only be provided instances ofFloat64Array
). - Accessor functions do not verify that provided input arrays are array instances corresponding to
dtype
, as doing so would introduce performance overhead. If array instances corresponding to other data types are provided to an accessor function, JavaScript runtimes will consider the function polymorphic, potentially triggering de-optimization. In order to ensure maximum performance, always ensure that an accessor function is monomorphic. - Accessor functions do not perform bounds checking.
- Accessor functions do not validate input values.
- An indexed array-like object is a data structure in which one accesses elements via integer indices using bracket
[]
notation (e.g.,Float64Array
,Int32Array
,Array
, etc). This is in contrast to an accessor array-like object in which one accesses elements usingget
andset
methods (e.g.,Complex64Array
andComplex128Array
).
Examples
var filled = require( '@stdlib/array/filled' );
var dtype = require( '@stdlib/array/dtype' );
var setter = require( '@stdlib/array/base/setter' );
var arr = filled( 1.0, 10, 'float64' );
setter( dtype( arr ) )( arr, 2, 100.0 );
console.log( arr );
arr = filled( 2.0, 10, 'float32' );
setter( dtype( arr ) )( arr, 2, 100.0 );
console.log( arr );
arr = filled( 3, 10, 'int32' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 4, 10, 'int16' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 5, 10, 'int8' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 6, 10, 'uint32' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 7, 10, 'uint16' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 8, 10, 'uint8' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );
arr = filled( 9, 10, 'uint8c' );
setter( dtype( arr ) )( arr, 2, 100 );
console.log( arr );