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

こんにちは!エンジニア兼ライターのヤマシタです。

RubyにはHash(ハッシュ)のキーに対応した値を取り出すために便利なfetchメソッドがあります。

ハッシュのキーを指定して値を取り出すだけなら要素にキーを指定するだけでOKですが、fetchメソッドを使うことによる便利な使い方があることをご存知でしたか?

ここでは、そんなfetchメソッドについて

【基礎】fetchメソッドとは
【基礎】fetchメソッドの基本的な使い方
【発展】fetchメソッドの例外処理
【発展】fetchメソッドでデフォルト値を指定する

などについて解説いたします。

fetchメソッドはハッシュの値を取り出すときに便利なメソッドですので、使い方をしっかりと理解しておきましょう。

fetchとは

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

fetchメソッドの書き方

hash.fetch(key)

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

次よりfetchの使い方を詳しく見ていきましょう。

fetchの使い方

ここではパターン別にfetchの使い方を解説していきます。

以下の例ではfetchでハッシュのキーを指定して紐づくバリューを取得しています。

サンプルプログラム:

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }

puts fruits.fetch("apple")
puts fruits.fetch("orange")
puts fruits.fetch("melon")

実行結果:

100
80
450

このように指定したキーのバリューが簡単に取得できることがわかりますね!

fetchの例外処理

fetchメソッドは前述したように引数に指定したキーが存在しないと例外が発生します。

サンプルプログラム:

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }

puts fruits.fetch("banana")

実行結果:

Main.rb:5:in `fetch’: key not found: “banana” (KeyError)
    from Main.rb:5:in `<main>’

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

このようにfetchではキーが存在しない場合は例外が発生します。

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

サンプルプログラム:

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

実行結果:

key not found: “banana”

Rubyの例外処理については、以下の記事で詳しく解説していますのでぜひ参考にしてください。

defaultを指定する

fetchメソッドでは第二引数にデフォルトのバリューを設定することができます。

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

サンプルプログラム:

fruits = { "apple" => 100, "orange" => 80, "melon" => 450 }

puts fruits.fetch("banana", :"このキーは存在しません")

実行結果:

このキーは存在しません

このように存在しないキーを指定したため、第二引数に設定した値が出力されました!

まとめ

ここではfetchメソッドについて、

  • fetchメソッドとは
  • fetchメソッドの基本的な使い方
  • fetchメソッドの例外処理
  • fetchメソッドでデフォルト値を指定する

などについて解説しました。

fetchメソッドを使用すれば、もしハッシュのキーが存在しなかった場合は例外処理やデフォルト値の設定など、柔軟な対処が可能になりますので、使い方についてはよく理解しておきましょう。

もしfetchメソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

プログラミング学習を効率良く進めたいなら…

学習を始めたけどエラーが解決できない
作りたいものはあるけど、何から始めればいいかわからない
プログラミングに対して、このような悩みを持っている方も多いですよね。

そんな方には、弊社が運営するサブスク型のプログラミングスクール「SAMURAI ENGINEER Plus+がおすすめです。



月額2980円(税別)で、主に4つのサービスを提供させていただきます。

  • 現役エンジニアによる月1度の「マンツーマン指導」
  • 平均回答時間30分の「Q&Aサービス」
  • 作りながら学べる28種類の「教材」
  • 学習を記録&仲間と共有できる「学習ログ」

目的にあった教材を選べば、どなたでも効率よく学習できるほか、Q&Aサービスやマンツーマン指導を活用することで、挫折せずにプログラミングの習得が可能です。

プログラミングを効率的に学びたい人はもちろん、何から始めたらよいのかわからない方は、ぜひ「SAMURAI ENGINEER Plus+」をご利用ください。
まずは30日無料体験

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。プログラミング初学者に向けてわかりやすく、ためになるコンテンツ作りを心がけています。