/* * call-seq: * dvector.slice!(int) -> number or nil * dvector.slice!(start, length) -> sub_vector or nil * dvector.slice!(range) -> sub_vector or nil * * Deletes the element(s) given by an index (optionally with a length) * or by a range. Returns the deleted object, subvector, or * <code>nil</code> if the index is out of range. * * a = Dvector.new(5) {|i| i*3 } * a.slice!(1) -> 3 * a -> Dvector[0, 6, 9, 12] * a.slice!(-1) -> 12 * a -> Dvector[0, 6, 9] * a.slice!(100) -> nil * a -> Dvector[0, 6, 9] * a.slice!(1..2) -> Dvector[6, 9] * a -> Dvector[0] * a.slice!(1..2) -> Dvector[] * a -> Dvector[0] * a.slice!(0..2) -> Dvector[0] * a -> Dvector[] */ VALUE dvector_slice_bang(int argc, VALUE *argv, VALUE ary) {