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