getter
Return an accessor function for retrieving an element from an indexed array-like object.
Usage
var getter = require( '@stdlib/array/base/getter' );
getter( dtype )
Returns an accessor function for retrieving an element from an indexed array-like object.
var arr = [ 1, 2, 3, 4 ];
var get = getter( 'generic' );
var v = get( arr, 2 );
// returns 3
The returned accessor function accepts the following arguments:
- arr: input array.
- idx: element index.
Notes
- If provided an unsupported
dtype
, the function returns a default accessor function for accessing elements from 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.
- An indexed array-like object is a data structure in which one retrieves 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 retrieves elements usingget
andset
methods (e.g.,Complex64Array
andComplex128Array
).
Examples
var filled = require( '@stdlib/array/filled' );
var dtype = require( '@stdlib/array/dtype' );
var getter = require( '@stdlib/array/base/getter' );
var arr = filled( 1.0, 10, 'float64' );
var v = getter( dtype( arr ) )( arr, 2 );
// returns 1.0
arr = filled( 2.0, 10, 'float32' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 2.0
arr = filled( 3, 10, 'int32' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 3
arr = filled( 4, 10, 'int16' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 4
arr = filled( 5, 10, 'int8' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 5
arr = filled( 6, 10, 'uint32' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 6
arr = filled( 7, 10, 'uint16' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 7
arr = filled( 8, 10, 'uint8' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 8
arr = filled( 9, 10, 'uint8c' );
v = getter( dtype( arr ) )( arr, 2 );
// returns 9