function assign( x, mask, out, stride, offset, clbk, thisArg ) {
	var xo;
	var mo;
	var oo;

	xo = arraylike2object( x );
	mo = arraylike2object( mask );
	oo = arraylike2object( out );
	if (
		xo.accessorProtocol ||
		mo.accessorProtocol ||
		oo.accessorProtocol
	) {
		accessors( xo, mo, oo, stride, offset, clbk, thisArg );
		return out;
	}
	indexed( x, mask, out, stride, offset, clbk, thisArg );
	return out;
}
Applies a mask and a callback function to a provided input array and assigns results to elements in a provided output array.

@param {Collection} x - input array
@param {Collection} mask - mask array
@param {Collection} out - output array
@param {integer} stride - output array stride
@param {NonNegativeInteger} offset - output array offset
@param {Function} clbk - function to apply
@param {*} [thisArg] - callback execution context
@returns {Collection} output array

@example
var x = [ 1, 2, 3, 4 ];
var mask = [ 0, 1, 0, 1 ];

function scale( x ) {
    return x * 10;
}

var out = [ 0, 0 ];
var arr = assign( x, mask, out, 1, 0, scale );
// returns [ 20, 40 ]

var bool = ( arr === out );
// returns true