値の取得

広告

ハッシュオブジェクトから指定の値を取得する方法を確認します。書式は次の通りです。

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

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

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

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

print(hash["Katou"])
year = hash["Yamada"]

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

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

fetchメソッド

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

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

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

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

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

print(hash["Katou"])
print(hash.fetch("Katou"))

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

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

サンプルプログラム

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

test2-1.rb

#! ruby -Ku
require "kconv"

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

print(Kconv.tosjis("年齢 : "), hash["Katou"], "¥n")
print(Kconv.tosjis("年齢 : "), hash.fetch("Yamada"), "¥n")
print(Kconv.tosjis("年齢 : "), hash["Takahashi"], "¥n")
print(Kconv.tosjis("年齢 : "), hash.fetch("Takahashi"), "¥n")

上記のプログラムを「test2-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。

値の取得

「fetch」メソッドの引数に指定したキーを指定した場合はエラーとなることが確認できます。

( Written by Tatsuo Ikura )

関連記事 (一部広告含む)