each を使うと、プログラムで繰り返し処理を行うことができます。
以下から Rubyでの「each・do」の使い方を解説していきます。
each の基本
「each」を使うと、オブジェクトに対して繰り返し処理を行うことができます。
オブジェクト.each do |変数|
繰り返しを行う処理
end
以下のように記述する方法もあります。
オブジェクト.each { |変数|
繰り返しを行う処理
}
each で使えるオブジェクト一覧
- 範囲オブジェクト(
1..5
など) - 配列(
["orange", "grape", "banana"]
など) - ハッシュ(
{:suzuki => 80, :tanaka => 70, :yamada => 90}
など)
each を使ったプログラム例
実際にプログラムを書いて動作を確認してみましょう。
範囲オブジェクトで繰り返し処理をする
a..b
は「a から b」の範囲を表す範囲オブジェクトです。
例えば「5から10」を表すときは、5..10
のようにします。これを each メソッドと組み合わせて使ってみましょう。
(5..10).each do |num|
p num
end
5
6
7
8
9
10
do |num| 〜 end
のブロック内に要素ひとつひとつに対して行いたい処理を書きます。
変数「num」に 5
, 6
, 7
, 8
, 9
, 10
がひとつずつ順番に展開されていき、do |num| 〜 end
のブロック内に書かれた処理を繰り返し行なっていきます。今回は p num
で値を表示しています。
配列で繰り返し処理をする
each メソッドを使うと、配列の要素を順番に取り出して処理を行うことができます。
以下は「fruits」の変数に格納されている配列の要素を先頭から順番に取り出して表示する例。
fruits = ["orange", "grape", "banana"]
fruits.each do |fruit|
p fruit
end
"orange"
"grape"
"banana"
do |fruit| 〜 end
のブロック内に配列の要素ひとつひとつに対して行いたい処理を書きます。
変数「fruit」に "orange"
, "grape"
, "banana"
がひとつずつ順番に展開されていき、do |fruit| 〜 end
のブロック内で書かれた処理を繰り返し行なっていきます。今回は p fruit
で値を表示しています。
ハッシュで繰り返し処理をする
each メソッドを使うと、ハッシュの要素を順番に取り出して処理を行うことができます。
以下は「score」の変数に格納されているハッシュの要素を先頭から順番に取り出して表示する例。
score = {:suzuki => 80, :tanaka => 70, :yamada => 90}
score.each do |key, value|
p "#{key}さんの点数は#{value}点です"
end
"suzukiさんの点数は80点です"
"tanakaさんの点数は70点です"
"yamadaさんの点数は90点です"
score.each do |key, value| 〜 end
のブロック内にハッシュの要素ひとつひとつに対して行いたい処理を書きます。
変数「key」にキーである :suzuki
, :tanaka
, :yamada
、「value」にバリューである 80
, 70
, 90
がひとつずつ順番に展開されていき、do |key, value| 〜 end
のブロック内で書かれた処理を繰り返し行なっていきます。今回は p "#{key}さんの点数は#{value}点です"
でキーとバリューの値を表示しています。
まとめ
以上、Rubyでの「each・do」の使い方でした!
ここまでの内容をまとめておきます。
- 「each」を使うと、オブジェクトに対して繰り返し処理を行うことができる。
- each が使えるオブジェクトの種類には、範囲オブジェクト(
1..5
など)や、配列(["orange", "grape", "banana"]
など)、ハッシュ({:suzuki => 80, :tanaka => 70, :yamada => 90}
など)がある。 do |○○○| 〜 end
の〜
のブロック内に、繰り返して行いたい処理を書く。do |○○○| 〜 end
の○○○
で指定した変数に、展開した要素が格納され、繰り返し処理の中で使える。