ハッシュオブジェクトから値を取得する

ハッシュでは複数のオブジェクトを管理することができますが、それぞれのオブジェクトを管理しているのがハッシュの要素です。ハッシュには複数の要素が含まれますが、それぞれの要素にはキーと値の 2 つのオブジェクトが格納されており、キーを指定することで対応する値を取得できます。ここでは Ruby でハッシュオブジェクトから値を取得する方法について解説します。

(Last modified: )

ハッシュオブジェクトから値を取得する

ハッシュオブジェクトを作成するときに、それぞれの要素にはキーと値の組み合わせを格納します。

{キー1 => 値1, キー2 => 値2, ...]

作成したハッシュオブジェクトからはキーを指定することで対応する値を取得することができます。次のように記述します。

ハッシュオブジェクト[キー]

引数に指定したキーに対応する値を取り出します。

具体的には次のように記述します。

h = {"Yamada" => 34, "Katou" => 28, "Endou" => 18}

puts(h["Katou"])
puts(h["Yamada"])

上記では 3 つの要素を持つハッシュの中から指定したキーを持つ値を取り出しています。キー "Katou" に対応する値は 28 と言う数値です。またキー "Yamada" に対応する値は 34 と言う数値です。

なお存在しないキーを指定して要素を取得しようとした場合 nil が返されます。

fetchメソッドを使って値を取得する

詳しくは次のページで確認しますがハッシュオブジェクトは Hash クラスのオブジェクトです。 Hash クラスではキーを指定して要素を取得するために fetch メソッドが用意されています。

ハッシュオブジェクト.fetch(key[, default])

最初の引数にキーを指定すると対応する値を取得できます。

具体的には次のように記述します。

h = {"Yamada" => 34, "Katou" => 28, "Endou" => 18}

puts(h["Katou"])
puts(h.fetch("Katou"))

hash["Katou"]hash.fetch("Katou") も同じ要素に含まれる値を取得しています。

ただし fetch メソッドの場合は存在しないキーを指定して値を取得しようとすると KeyError エラーが発生します。

サンプルコード

では簡単なプログラムで確認してみます。

# encoding: UTF-8

h = {"Yamada" => 34, "Katou" => 28, "Endou" => 18}

puts("Katou : " + h["Katou"].to_s)
puts("Yamada : " + h.fetch("Yamada").to_s)
puts("Takahashi : " + h.fetch("Takahashi","不明").to_s)

下記のように実行して下さい。

値の取得

-- --

Ruby でハッシュオブジェクトから値を取得する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。