Rubyのfor文 - 繰り返し処理

Rubyのfor文 - 繰り返し処理

image

目次
  1. for 〜 繰り返し処理とは
  2. for文の書き方
  3. for文のサンプルコード
  4. 配列
  5. ハッシュ
  6. 範囲オブジェクト
  7. まとめ

for 〜 繰り返し処理とは

for文は繰り返し処理を行う制御構文で、if文などの条件分岐と同じくプログラミングでは欠かせない仕組みのひとつです。繰り返しは英語でloopですので、ループ処理とも呼ばれます。

繰り返し処理は、特定の回数や範囲内で同じ処理を繰り返したい場合に使います。

ただし、繰り返し文は使い方を間違えると無限ループに陥るため、注意して使う必要があります。(無限ループとは繰り返し処理が際限なく実行されることで、発生した場合にはプログラムが反応しなくなり外部から強制終了するなどの措置が必要になります)

Rubyの繰り返し処理にはfor文、while文、eachメソッド、loopメソッドといった様々なものがありますが、この記事ではそのひとつであるfor文の基本的な書き方について紹介します。

for文の書き方

基本的なfor文の書式は以下になります。

for (変数) in (オブジェクト) do
  (実行する処理)
end

※「do」は省略できます。

他の繰り返し処理であるwhile文やuntil文などとfor文との違いは、for文では予め決められたオブジェクトから値を取り出して実行するという点です。

このオブジェクトには配列、ハッシュ、範囲オブジェクトなどが入ります。

for文のサンプルコード

配列

array = ['赤', '黃', '青']

for color in array do
  puts color
end
<実行結果>
赤
黃
青

配列の中身を表示するfor文です。ただし、Rubyの配列にはデフォルトでeachメソッドがあるため、このような配列展開にfor文を使うことはあまりないかと思います。

ハッシュ

hash = {dog: '犬', cat: '猫'}

for key, value in hash do
  puts "#{value}は英語で#{key}です"
end
<実行結果>
犬は英語でdogです
猫は英語でcatです

ハッシュのキーと値の中身を表示するfor文です。Rubyではダブルクォーテーション(")の中で#{}を用いることによって変数展開ができます。

ただし、このような使い方の場合、配列と同じくeachメソッドで展開する場面のほうが多いかと思います。参考程度に覚えておくといいでしょう。

範囲オブジェクト

for num in 1..5 do
  puts num
end
<実行結果>
1
2
3
4
5

「1..5」の部分を範囲オブジェクトといいます。この場合は1から5までの数字が入っているオブジェクトになっていて、それらがひとつずつ表示される結果となっています。

ちなみに「1...5」とドットを3つにすると1から5未満までの数字となり、1から4までの数字が表示されるようになります。

実際にプログラミングを行う場合は、この範囲オブジェクトを用いてfor文を使うことが多いように思います。

例えば、サイコロを3個振る場合には、この範囲オブジェクトのfor文が使うと同じ処理を3回繰り返すことなく実行できます。

for n in 1..3 do
  puts rand(1..6)
end
<実行結果>
2
6
4

rand(1..6)は1から6までの範囲オブジェクトの中からランダムでひとつ値を選択するという関数です。

このように同じ動作を決まった回数行う場合にはfor文を使うといいでしょう。

まとめ

今回はRubyのfor文について解説しました。Rubyではeachメソッドがあるため、他言語と比べてあえてfor文を利用する場面が少ないかもしれません。ですが、for文はプログラミングにおいて基本的な制御構文ですので、ぜひ覚えておきましょう! image

Tech 2 GO編集部
ライター
Tech 2 GO編集部

関連記事