要素の追加と値の変更
作成したハッシュオブジェクトにはキーを指定することで対応する値を取得することが出来ましたが、別のオブジェクトを値に再度代入する事が出来ます。
値に対して新しいオブジェクトを代入する場合は次のように行います。
ハッシュオブジェクト[キー] = オブジェクト
キーに対応する新しい値として、右辺に指定したオブジェクトを代入します。
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150} hash["Lemon"] = 120
キー「Lemon」に対する値として「120」を代入しています。
またキーと値のペアを新しい要素として追加する場合にも同じ書式を使用します。ハッシュオブジェクトに存在しないキーを指定して値を代入した場合は新しい要素としてハッシュに追加されます。
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150} hash["Banana"] = 90
この場合キー「Banana」はハッシュに存在していませんので、新しく要素として(キー, 値) = ("Banana", 90)が追加されます。
storeメソッド
Hashクラスの新しい要素を追加したり、指定したキーに対する新しい値を代入するための「store」メソッドが用意されています。書式は次の通りです。
ハッシュオブジェクト.store(key,value)
1番目の引数にキー、2番目の引数に値を指定します。キーが既に存在している場合はキーに対する新しい値が代入されます。またキーが存在していなかった場合はキーと値を持つ新しい要素としてハッシュに追加します。
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150} hash.store("Lemon", 120) hash.store("Banana", 190)
上記ではキー「Lemon」に対する新しい値として「120」を代入し、また新しい要素として(キー, 値) = ("Banana", 190)をハッシュに追加します。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" hash = {"Lemon" => 100, "Orange" => 150} print("Lemon = ", hash["Lemon"], "¥n"); print("Orange = ", hash["Orange"], "¥n"); print("¥n"); hash["Lemon"] = 120 print("Lemon = ", hash["Lemon"], "¥n"); print("Orange = ", hash["Orange"], "¥n"); print(Kconv.tosjis("現在の要素数:"), hash.length, "¥n") hash["Banana"] = 90 print("Banana = ", hash["Banana"], "¥n"); print(Kconv.tosjis("追加後の要素数:"), hash.length, "¥n") print("¥n"); hash.store("Peach", 210) hash.store("Banana", 80) print("Peach = ", hash["Peach"], "¥n"); print("Banana = ", hash["Banana"], "¥n");
上記のプログラムを「test5-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )