Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Set#select!
() { (A) -> untyped } -> self?
select! {|element| ... } → self or nil
select! → enumerator
set.c
View on GitHub ↗
static VALUE
set_i_select(VALUE set)
{
RETURN_SIZED_ENUMERATOR(set, 0, 0, set_enum_size);
rb_check_frozen(set);
set_table *table = RSET_TABLE(set);
size_t n = set_table_size(table);
set_iter(set, set_keep_if_i, (st_data_t)table);
set_compact_after_delete(set);
return (n == set_table_size(table)) ? Qnil : set;
}
With a block given, like keep_if, but returns nil if no changes were made:
Example
set = Set[*0..9] # => Set[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] set.select! {|i| i.even? } # => Set[0, 2, 4, 6, 8] set.select! {|i| i.even? } # => nil set.select! {|i| i.odd? } # => Set[]
With no block given, returns an Enumerator.
Related: see Methods for Deleting.