accessorGetter
Return an accessor function for retrieving an element from an array-like object supporting the get/set protocol.
Usage
var accessorGetter = require( '@stdlib/array/base/accessor-getter' );
accessorGetter( dtype )
Returns an accessor function for retrieving an element from an array-like object supporting the get/set protocol.
var Complex64Array = require( '@stdlib/array/complex64' );
var realf = require( '@stdlib/complex/float32/real' );
var imagf = require( '@stdlib/complex/float32/imag' );
var arr = new Complex64Array( [ 1, 2, 3, 4 ] );
var get = accessorGetter( 'complex64' );
var v = get( arr, 1 );
// returns <Complex64>
var re = realf( v );
// returns 3.0
var im = imagf( v );
// returns 4.0
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 supporting the get/set protocol; otherwise, the function returns an accessor function which should only be provided an array instance corresponding todtype
(e.g., ifdtype
is'complex64'
, the returned accessor function should only be provided instances ofComplex64Array
). - 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 verify that provided input arrays actually implement the get/set protocol.
- An array-like object supporting the get/set protocol is a data structure in which one accesses elements using explicit
get
andset
methods (e.g.,Complex64Array
andComplex128Array
).
Examples
var Complex128Array = require( '@stdlib/array/complex128' );
var Complex64Array = require( '@stdlib/array/complex64' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var dtype = require( '@stdlib/array/dtype' );
var accessorGetter = require( '@stdlib/array/base/accessor-getter' );
var arr = new Complex128Array( zeroTo( 10 ) );
var v = accessorGetter( dtype( arr ) )( arr, 2 );
// returns <Complex128>
console.log( v.toString() );
// => '4 + 5i'
arr = new Complex64Array( zeroTo( 10 ) );
v = accessorGetter( dtype( arr ) )( arr, 4 );
// returns <Complex64>
console.log( v.toString() );
// => '8 + 9i'