ハッシュに対する繰り返し処理
ハッシュオブジェクトは範囲オブジェクトや配列オブジェクトと同じく複数の要素を持つオブジェクトです。繰り返し処理を使うことでハッシュオブジェクトから順に要素を取得して処理を行うことができます。ここでは Ruby でハッシュオブジェクトに対して繰り返し処理を行う方法を解説します。
(Last modified: )
eachメソッドの使い方
Hash
クラスで用意されている each
メソッドを使用すると、ハッシュに含まれる要素毎に「キー」と「値」を順にブロックに渡して繰り返し処理を行うことができます。
オブジェクト.each{|key, value| 実行する処理1 実行する処理2 }
ハッシュオブジェクトに含まれる要素毎に、「キー」と「値」をブロックに渡して繰り返し処理が行われます。キーがハッシュオブジェクトに追加された順番に要素が取得されて評価されます。
具体的には次のように記述します。
h = {"Lemon" => 100, "Orange" => 150} h.each{|key, value| print(key + "=>", value) }
ハッシュオブジェクトに追加されている要素を順に取得し、要素のキーと値をブロック内で処理しています。
なお each
メソッドの別名として each_pair
メソッドも用意されています。使い方は同じです。
each_keyメソッドの使い方
Hash
クラスで用意されている each_key
メソッドを使用すると、ハッシュに含まれる要素毎に「キー」を順にブロックに渡して繰り返し処理を行うことができます。
オブジェクト.each_key{|key| 実行する処理1 実行する処理2 }
要素のキーだけを必要とする場合に使用します。
具体的には次のように記述します。
h = {"Lemon" => 100, "Orange" => 150} h.each_key{|key| print("key = " + key) }
ハッシュオブジェクトに追加されている要素を順に取得し、要素のキーをブロック内で処理しています。
each_valueメソッドの使い方
Hash
クラスで用意されている each_value
メソッドを使用すると、ハッシュに含まれる要素毎に「値」を順にブロックに渡して繰り返し処理を行うことができます。
オブジェクト.each_value{|value| 実行する処理1 実行する処理2 }
具体的には次のように記述します。
h = {"Lemon" => 100, "Orange" => 150} h.each_value{|value| print("value = ", value) }
ハッシュオブジェクトに追加されている要素を順に取得し、要素の値をブロック内で処理しています。
では簡単なプログラムで確認してみます。
# encoding: UTF-8 h = {"Lemon" => 100, "Orange" => 150, "Banana" => 250} puts("eachメソッド"); h.each{|key, value| puts("key = " + key + ", value = " + value.to_s) } puts() puts("each_keyメソッド"); h.each_key{|key| puts("key = " + key) } puts() puts("each_valueメソッド"); h.each_value{|value| puts("value = " + value.to_s) }
下記のように実行して下さい。
-- --
Ruby でハッシュオブジェクトに対して繰り返し処理を行う方法を解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。