uniq!()
public
Removes duplicate elements from self. Returns nil if no changes
are made (that is, no duplicates are found).
a = [ "a", "a", "b", "b", "c" ]
a.uniq!
b = [ "a", "b", "c" ]
b.uniq!
Show source
static VALUE
rb_ary_uniq_bang(VALUE ary)
{
VALUE hash, v, vv;
long i, j;
hash = ary_make_hash(ary, 0);
if (RARRAY_LEN(ary) == RHASH_SIZE(hash)) {
return Qnil;
}
for (i=j=0; i<RARRAY_LEN(ary); i++) {
v = vv = rb_ary_elt(ary, i);
if (st_delete(RHASH_TBL(hash), (st_data_t*)&vv, 0)) {
rb_ary_store(ary, j++, v);
}
}
ARY_SET_LEN(ary, j);
return ary;
}