Rubyリファレンス: Home

fetch (Hash)

Edit   History

標準クラス・モジュール > Hash > fetch

fetchメソッドは、ハッシュから引数で指定したキーの値を取り出して返します。[]メソッドと機能は同じですが、キーが存在しないときの動作が異なります。

hash.fetch(key)

fetchメソッドに引数keyを指定すると、そのキーの値を返します。キーが存在しないときは、Ruby 1.8では例外IndexErrorが、Ruby 1.9では例外KeyErrorが発生します。ハッシュにデフォルト値を設定していても、例外が発生します。

scores = { "Alice" => 50, "Bob" => 60, "Carol" => 90, "David" => 40 }
puts scores.fetch("Alice")
puts scores.fetch("Eve") rescue p $!
50
#<IndexError: key not found>   (Ruby 1.8)
50
#<KeyError: key not found>     (Ruby 1.9)
hash.fetch(key, default)

第2引数defaultを指定すると、キーが存在しないときはdefaultを返します。

scores = { "Alice" => 50, "Bob" => 60, "Carol" => 90, "David" => 40 }
puts scores.fetch("Eve", :not_found)
not_found
hash.fetch(key) {|k| block }

fetchメソッドにブロックを渡すと、キーが存在しないときはブロックの戻り値を返します。ブロック引数kには引数keyで指定したキーが入ります。

scores = { "Alice" => 50, "Bob" => 60, "Carol" => 90, "David" => 40 }
val = scores.fetch("Eve") {|key| "#{key} not found" }
puts val
Eve not found

関連項目