ハッシュに対する繰り返し
ハッシュオブジェクトは範囲オブジェクトや配列オブジェクトと同じく複数の要素を持つオブジェクトです。ここではハッシュオブジェクトに対して繰り返し処理を行う方法を確認していきます。「each」メソッド、「each_key」メソッド、「each_value」メソッドがあります。
eachメソッド
Hashクラスで用意されている「each」メソッドは使います。ハッシュオブジェクトに対して「each」メソッドを実行すると、ハッシュに含まれる要素毎に「キー」と「値」を順にブロックに渡して繰り返し処理が行われます。
オブジェクト.each{|key, value|
実行する処理1
実行する処理2
}
ハッシュオブジェクトに含まれる要素毎に、「キー」と「値」をブロックに渡して繰り返し処理が行われます。
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150}
hash.each{|key, value|
print(key + "=>", value)
}
ブロックに渡されてきた「キー」と「値」を画面に出力しています。
なお「each」メソッドの別名として「each_pair」メソッドも用意されています。使い方は同じです。
each_keyメソッド
Hashクラスで用意されている「each_key」メソッドは要素の中の「キー」だけをブロック内に渡して繰り返し処理を行います。
オブジェクト.each_key{|key|
実行する処理1
実行する処理2
}
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150}
hash.each_key{|key|
print("key = " + key)
}
ブロックに渡されてきたキーの値を画面に出力しています。
each_valueメソッド
Hashクラスで用意されている「each_value」メソッドは要素の中の「値」だけをブロック内に渡して繰り返し処理を行います。
オブジェクト.each_value{|value|
実行する処理1
実行する処理2
}
具体的には次のように記述します。
hash = {"Lemon" => 100, "Orange" => 150}
hash.each_value{|value|
print("value = ", value)
}
ブロックに渡されてきたキーの値を画面に出力しています。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku
require "kconv"
hash = {"Lemon" => 100, "Orange" => 150, "Banana" => 250}
print(Kconv.tosjis("eachメソッド¥n"));
hash.each{|key, value|
print(key + "=>", value, "¥n")
}
print(Kconv.tosjis("each_keyメソッド¥n"));
hash.each_key{|key|
print("key = " + key + "¥n")
}
print(Kconv.tosjis("each_valueメソッド¥n"));
hash.each_value{|value|
print("value = ", value, "¥n")
}
上記のプログラムを「test7-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )
RubyLife