繰り返し処理!Rubyでeachを使う方法【初心者向け】

Rubyで書くeachメソッドの使い方を解説します。eachメソッドはfor文同様繰り返し処理を行うメソッドで、配列や範囲オブジェクトで用意されているメソッドになります。ここではfor文と比較して説明していきます。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのメソッドを使う方法について解説している記事です。

eachメソッドは配列、範囲オブジェクトなどで用意されているメソッドで、for文に似た動作をします。

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回はeachメソッドについて解説するよ。

大石ゆかり

田島メンター!!eachはどういったことをするんですか〜?

田島悠介

eachは指定したオブジェクト内の要素を順番に取り出して処理することができるものなんだ。

大石ゆかり

そうなんですね〜!

 

each文の書き方

比較するために、まずfor文の基本構造をおさらいしましょう。

for文

for 変数 in オブジェクト do
繰り返す処理
end

*doは省略可

 

それに対して、

eachメソッド

オブジェクト.each do |変数|
繰り返す処理
end

*doは省略可

となります。

 

これはfor文がRubyの内部構造でeachメソッドを実行しているからです。

しかし、eachメソッドの変数はブロックスコープ内で宣言されるため、ブロック内部からしか呼び出すことができません。

 

田島悠介

例えばオブジェクトの部分に配列を入れると、その中の要素を順番に取り出して処理を行うんだ。

大石ゆかり

(1..10)みたいな、範囲オブジェクトも使えるんですか?

田島悠介

もちろん範囲オブジェクトで指定することもできるよ。次の例で見てみよう。

 

実際に書いてみよう

それではeachメソッドを使って、1〜10を表示させるプログラムを書いてみましょう。

(1..10).each do |num|
print("num = ", num,"\n")
end

これをfor文で書くと、

for num in 1..10 do
print("num = ",num,"\n")
end

となります。

実行結果

2091a23a37a3f7c00e45732479683d3a

eachメソッドもfor文も意味合いはほとんど変わりないので、他人のソースコードを見たときに、きちんとわかるようにしておきましょう。

 

田島悠介

範囲オブジェクトで指定した中の数値が順番に変数に格納され、それが文字列と一緒に出力されているね。

大石ゆかり

配列などを扱うときは、forより分かりやすいかもしれませんね。

田島悠介

配列内のすべての要素を対象とするときなどは確かに便利だね。状況に応じて使い分けよう。

大石ゆかり

分かりました。ありがとうございます!

 

[お知らせ]TechAcademyでは初心者でも8週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。RubyでWebアプリを開発したい方はご参加ください。