instance method
Hash#delete
(K arg0) -> V?
[U] (K arg0) { (K arg0) -> U } -> (U | V)
delete(key) → value or nil
delete(key) {|key| ... } → object
hash.c
View on GitHub ↗
static VALUE
rb_hash_delete_m(VALUE hash, VALUE key)
{
VALUE val;
rb_hash_modify_check(hash);
val = rb_hash_delete_entry(hash, key);
if (!UNDEF_P(val)) {
compact_after_delete(hash);
return val;
}
else {
if (rb_block_given_p()) {
return rb_yield(key);
}
else {
return Qnil;
}
}
}
If an entry for the given key is found, deletes the entry and returns its associated value; otherwise returns nil or calls the given block.
With no block given and key found, deletes the entry and returns its value:
Example
h = {foo: 0, bar: 1, baz: 2} h.delete(:bar) # => 1 h # => {foo: 0, baz: 2}
With no block given and key not found, returns nil.
With a block given and key found, ignores the block, deletes the entry, and returns its value:
Example
h = {foo: 0, bar: 1, baz: 2} h.delete(:baz) { |key| raise 'Will never happen'} # => 2 h # => {foo: 0, bar: 1}
With a block given and key not found, calls the block and returns the block’s return value:
Example
h = {foo: 0, bar: 1, baz: 2} h.delete(:nosuch) { |key| "Key #{key} not found" } # => "Key nosuch not found" h # => {foo: 0, bar: 1, baz: 2}
Related: see Methods for Deleting.