fetchメソッドとは


fetchとは

fetchメソッドは引数にハッシュのキーを指定することにより、そのキーとセットになっているバリューを取り出してくれるメソッド。

使い方

hash.fetch(key)

基本的には「hash:[キー]」でバリューを取り出す動作と代わりないが、fetchでは指定したキーが存在しない場合は例外を返す。

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }
 
puts fruits.fetch("apple")
=> 100

puts fruits.fetch("orange")
=> 80

puts fruits.fetch("melon")
=> 450

fetchの例外処理も見てみる。

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }
 
puts fruits.fetch("banana")
=> `fetch’: key not found: “banana” (KeyError)
    from Main.rb:5:in `<main>

ここではハッシュに存在しないキー「banana」を指定したため例外KeyErrorが発生した。

例外処理を発生させたい場合は、以下のようにfetchメソッドを使用する。

begin
  fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }
  puts fruits.fetch("banana")
rescue => e
  puts e
end

=> key not found: banana

また、fetchメソッドでは第二引数にデフォルトのバリューを設定することができる。
第二引数にデフォルトのバリューを設定しておくことで、キーが存在しなかった場合は例外ではなく、指定したデフォルトの値を返す。

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }
puts fruits.fetch("banana", :"このキーは存在しません")

=> このキーは存在しません

参考記事

はじめてのRuby!fetchメソッドの使いかたをマスターしよう!