diff options
| author | Jun Hiroe <[email protected]> | 2014-05-04 00:35:18 +0900 |
|---|---|---|
| committer | Jun Hiroe <[email protected]> | 2014-05-04 00:46:36 +0900 |
| commit | 3e7db4ad271f5e2eebdb92114266d15d21d5cc34 (patch) | |
| tree | f8d0be72db26f774df3afe66b749e4c31b4a22b2 /mrbgems/mruby-hash-ext/mrblib | |
| parent | 8e4d3bb94e869679486ebeaefcc586b4e3ed5cb7 (diff) | |
| download | mruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.tar.gz mruby-3e7db4ad271f5e2eebdb92114266d15d21d5cc34.zip | |
Add Hash#delete_if
Diffstat (limited to 'mrbgems/mruby-hash-ext/mrblib')
| -rw-r--r-- | mrbgems/mruby-hash-ext/mrblib/hash.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/mrbgems/mruby-hash-ext/mrblib/hash.rb b/mrbgems/mruby-hash-ext/mrblib/hash.rb index bf3836514..2b089232f 100644 --- a/mrbgems/mruby-hash-ext/mrblib/hash.rb +++ b/mrbgems/mruby-hash-ext/mrblib/hash.rb @@ -27,4 +27,27 @@ class Hash self[key] end end + + ## + # call-seq: + # hsh.delete_if {| key, value | block } -> hsh + # hsh.delete_if -> an_enumerator + # + # Deletes every key-value pair from <i>hsh</i> for which <i>block</i> + # evaluates to <code>true</code>. + # + # If no block is given, an enumerator is returned instead. + # + # h = { "a" => 100, "b" => 200, "c" => 300 } + # h.delete_if {|key, value| key >= "b" } #=> {"a"=>100} + # + + def delete_if(&block) + return to_enum :delete_if unless block_given? + + self.each do |k, v| + self.delete(k) if block.call(k, v) + end + self + end end |
