値の取得
ハッシュオブジェクトから指定の値を取得する方法を確認します。書式は次の通りです。
ハッシュオブジェクト[キー]
引数に指定したキーに対応する値を取り出します。
具体的には次のように記述します。
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」エラーが発生します。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! 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 )