本文へスキップ
BecomeCoder

Rubyコース · 第4章 ハッシュ · レッスン19

ハッシュをeachで回す ― キーと値を両方取り出す

ブラウザで完結

導入

ハッシュに入っているデータ全部を順番に処理したいとき、配列と同じように each が使えます。ただしハッシュの場合、ブロック変数を2つ用意してキーと値の両方を受け取ります。

説明

scores = {"太郎" => 80, "花子" => 90, "次郎" => 70}
scores.each do |name, score|
  puts "#{name}: #{score}点"
end

each do |キー, 値| ... end のように書くと、ハッシュに登録された順番で、1組ずつキーと値がブロック変数に渡されます。配列の each と同じ感覚で使えます。

やってみよう

scores の中身を増やしたり、each の中の表示を変えたりしてみましょう。キーだけ、値だけを使う(片方を _ にする)書き方も試してみてください。

演習

ハッシュ prices = {"りんご" => 100, "バナナ" => 150}each で回し、りんご: 100円 のように表示してください(2行)。

ヒント1を見る

prices.each do |name, price| puts "#{name}: #{price}円" end のように書きます。

ヒント2を見る

ブロック変数は |キー, 値| の順番です。

実際に動かしてみよう

下のエディタにRubyを書いて「実行」を押すと、学習用シミュレータが puts / print / p の出力を表示します(本物のRubyではなく、教材の範囲を再現した軽量な自作エンジンです)。配列・ハッシュ・ブロック(each/map/select)・メソッド・クラス・モジュール・例外なども動きます。本文の例を書き換えて動かしてみましょう(gem・Rails・ファイル入出力など一部の機能は対象外です。文字列を伸ばすときは str << も可能ですが、変数に反映されるのは str += です)。

Ruby — ブラウザ内で実行(学習用シミュレータ)

Rubyの教材サブセットを動かす学習用シミュレータを読み込みます(本物のRubyではなく、動きを再現した軽量な自作エンジンです)。
スクロールして表示された時点でも自動で読み込まれます。