【Ruby入門】each の使い方(each・do を使った繰り返し処理まとめ)

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○○○ で指定した変数に、展開した要素が格納され、繰り返し処理の中で使える。