accessors
Return element accessors for a provided array-like object.
Usage
var accessors = require( '@stdlib/array/base/accessors' );
accessors( x )
Returns element accessors for a provided array-like object.
var obj = accessors( [ 1, 2, 3, 4 ] );
// returns {...}
var bool = obj.accessorProtocol;
// returns false
var fcns = obj.accessors;
// returns [ <Function>, <Function> ]
Notes
The returned object has the following properties:
- accessorProtocol:
boolean
indicating whether the provided array-like object supports the get/set protocol (i.e., uses accessors for getting and setting elements). - accessors: a two-element array whose first element is an accessor for retrieving an array element (i.e., a getter) and whose second element is an accessor for setting an array element (i.e., a setter).
- accessorProtocol:
The getter accessor accepts two arguments:
- arr: array-like object.
- idx: element index.
The setter accessor accepts three arguments:
- arr: array-like object.
- idx: element index.
- value: value to set.
The intent of this function is to provide a minimal abstraction over how elements are accessed when operating on indexed (i.e., array-like objects supporting element accesss via integer indices using bracket
[]
syntax) and accessor (i.e., array-like objects supporting the get/set protocol in which explicitget
andset
methods are used for element access) array-like objects.
Examples
var Complex64Array = require( '@stdlib/array/complex64' );
var zeroTo = require( '@stdlib/array/base/zero-to' );
var accessors = require( '@stdlib/array/base/accessors' );
// Create an array:
var x = new Complex64Array( zeroTo( 10 ) );
// Get accessor functions for retrieving array elements:
var obj = accessors( x );
// returns {...}
// Check whether the array supports the accessor protocol:
var bool = obj.accessorProtocol;
// returns true
console.log( 'Accessor protocol: %s', bool );
// Retrieve an array element:
var v = obj.accessors[ 0 ]( x, 1 );
// returns <Complex64>
console.log( 'x[1] = %s', v.toString() );