instance method
Hash#select!
() { (K, V) -> ::boolish } -> self?
() -> ::Enumerator[[ K, V ], self?]
select! {|key, value| ... } → self or nil
select! → new_enumerator
hash.c
View on GitHub ↗
static VALUE
rb_hash_select_bang(VALUE hash)
{
st_index_t n;
RETURN_SIZED_ENUMERATOR(hash, 0, 0, hash_enum_size);
rb_hash_modify_check(hash);
n = RHASH_SIZE(hash);
if (!n) return Qnil;
rb_hash_foreach(hash, keep_if_i, hash);
if (n == RHASH_SIZE(hash)) return Qnil;
return hash;
}
With a block given, calls the block with each entry’s key and value; removes from self each entry for which the block returns false or nil.
Returns self if any entries were removed, nil otherwise:
Example
h = {foo: 0, bar: 1, baz: 2} h.select! {|key, value| value < 2 } # => {foo: 0, bar: 1} h.select! {|key, value| value < 2 } # => nil
With no block given, returns a new Enumerator.
Related: see Methods for Deleting.