method

fetch

v1_8_7_72 - Show latest stable - Class: Hash
fetch(...)
public

Returns a value from the hash for the given key. If the key can’t be found, there are several options: With no other arguments, it will raise an IndexError exception; if default is given, then that will be returned; if the optional code block is specified, then that will be run and its result returned.

   h = { "a" => 100, "b" => 200 }
   h.fetch("a")                            #=> 100
   h.fetch("z", "go fish")                 #=> "go fish"
   h.fetch("z") { |el| "go fish, #{el}"}   #=> "go fish, z"

The following example shows that an exception is raised if the key is not found and a default value is not supplied.

   h = { "a" => 100, "b" => 200 }
   h.fetch("z")

produces:

   prog.rb:2:in `fetch': key not found (IndexError)
    from prog.rb:2

1Note

Fetch with default value

suzuki ยท Feb 4, 2016

You can specify default value as a fail-back if a hash doesn't have a given key.

{a: false}.fetch(:b, true) => true {a: false}.fetch(:a, true) => false

It is useful especially in the case where you want to set default value for a method.

def initialize(args) @foo = args.fetch(:foo, 1) @bar = args.fetch(:bar, 2)

This can take over the following way.

@bar = args[:bar] || 2

=> @bar is overwritten if caller specifies nil for :bar!

end