Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Set#flatten!
() -> self?
flatten! → self or nil
set.c
View on GitHub ↗
static VALUE
set_i_flatten_bang(VALUE set)
{
bool contains_set = false;
set_iter(set, set_contains_set_i, (st_data_t)&contains_set);
if (!contains_set) return Qnil;
rb_check_frozen(set);
return set_i_replace(set, set_i_flatten(set));
}
Like flatten, but if any changes were made replaces self with the result and returns self:
Example
Set[Set[0, 1], Set[2, 3]].flatten! # => Set[0, 1, 2, 3] Set[Set[0, 1], Set[Set[2, 3], Set[3, 4]]].flatten! # => Set[0, 1, 2, 3, 4]
Returns nil if no changes were made:
Example
Set[0, 1, 2].flatten! # => nil
Related: see Methods for Assigning.