summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-hash-ext/mrblib/hash.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems/mruby-hash-ext/mrblib/hash.rb')
-rw-r--r--mrbgems/mruby-hash-ext/mrblib/hash.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/mrbgems/mruby-hash-ext/mrblib/hash.rb b/mrbgems/mruby-hash-ext/mrblib/hash.rb
index 73d1fbe6d..d1a709325 100644
--- a/mrbgems/mruby-hash-ext/mrblib/hash.rb
+++ b/mrbgems/mruby-hash-ext/mrblib/hash.rb
@@ -474,4 +474,29 @@ class Hash
end
self
end
+
+ def to_proc
+ ->x{self[x]}
+ end
+
+ ##
+ # call-seq:
+ # hsh.fetch_values(key, ...) -> array
+ # hsh.fetch_values(key, ...) { |key| block } -> array
+ #
+ # Returns an array containing the values associated with the given keys
+ # but also raises <code>KeyError</code> when one of keys can't be found.
+ # Also see <code>Hash#values_at</code> and <code>Hash#fetch</code>.
+ #
+ # h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" }
+ #
+ # h.fetch_values("cow", "cat") #=> ["bovine", "feline"]
+ # h.fetch_values("cow", "bird") # raises KeyError
+ # h.fetch_values("cow", "bird") { |k| k.upcase } #=> ["bovine", "BIRD"]
+ #
+ def fetch_values(*keys, &block)
+ keys.map do |k|
+ self.fetch(k, &block)
+ end
+ end
end