Rubyでループを使う方法

2020-08-25 hit count image

Rubyでfor, whileなどループを使う方法について説明します。

概要

Rubyで反復的な動作を実行するため、for, whileそしてuntilのループを使えます。今回のブログではRubyのループとループを制御する方法について説明します。

ループ

Forループ

Forループは配列や範囲を使って反復的な動作を実行します。

for 要素 in 配列や範囲 do
  反復的な動作
end

下記のようにForループを使って反復な動作を実行します。

a = [1, 2, 3]

for i in a do
  puts i
end
# 1
# 2
# 3

上の例題からdoは下記のように書略できます。

a = [1, 2, 3]

for i in a
  puts i
end
# 1
# 2
# 3

範囲演算子を使って下記のように使うこともできます。

for i in 1..3 do
  puts i
end
# 1
# 2
# 3

範囲演算子については下記のブログを参考してください。

Whileループ

Whileループは与えられた条件が成立する間(true)、反復的な動作を実行します。

while 条件 do
  反復的な動作
end

下記のようにWhileループを使って反復的な動作を実行します。

i = 1

while i <= 3 do
  puts i
  i += 1
end
# 1
# 2
# 3

上の例題からdoを下記のように省略することができます。

i = 1

while i <= 3
  puts i
  i += 1
end
# 1
# 2
# 3

または下記のように使うこともできます。

i = 1

begin
  puts i
  i += 1
end while i <= 3
# 1
# 2
# 3

Utilループ

Untilループは与えれた条件が成立するまで(false), 反復的な動作を実行します。

until 条件 do
  反復的な動作
end

下記のようにUntilループを使って反復的な動作を実行することができます。

i = 1

until i > 3 do
  puts i
  i += 1
end
# 1
# 2
# 3

上の例題からdoを下記のように省略することができます。

i = 1

until i > 3
  puts i
  i += 1
end
# 1
# 2
# 3

ルークの制御

For, While, Untilのループを制御するためbreak, next, redoそしてretry制御文を使えます。

Break制御文

ループでBreakを使って強制的ループを止めることができます。

a = [1, 2, 3]

for i in a do
  puts i
  if i == 2 then
    break
  end
end
# 1
# 2

whileループでは下記のように使えます。

i = 1

while i <= 3
  puts i
  i += 1
  if i == 3 then
    break
  end
end
# 1
# 2

Untilループでは下記のように使えます。

i = 1

until i > 3
  puts i
  i += 1
  if i == 3 then
    break
  end
end
# 1
# 2

Next制御文

ループでNextを使って今実行されてる動作を止めて次の動作へ移動することができます。

a = [1, 2, 3]

for i in a do
  if i == 2 then
    next
  end
  puts i
end
# 1
# 3

whileループでは下記のように使えます。

i = 0

while i < 3
  i += 1
  if i == 2 then
    next
  end
  puts i
end
# 1
# 3

Untilループでは下記のように使えます。

i = 0

until i > 2
  i += 1
  if i == 2 then
    next
  end
  puts i
end
# 1
# 3

Redo制御文

ループでRedoを使って現在実行中の動作を止めて、同じ条件で再実行することができます。

a = [1, 2, 3]

for i in a do
  if i == 2 then
    i = 10
    redo
  end
  puts i
end
# 1
# 10
# 3

whileループでは下記のように使えます。

i = 1

while i <= 3
  puts i
  i += 1
  if i == 2 then
    i = 10
    redo
  end
end
# 1
# 10

Untilループでは下記のように使えます。

i = 1

until i > 3
  puts i
  i += 1
  if i == 3 then
    i = 10
    redo
  end
end
# 1
# 10

Retry制御文

ループでエラーが発生した場合、Retry制御文を使ってループを最初から試すことができます。

re = 1
a = [1, 2, 3]

begin
  for i in a do
    if re == 3 then
      break
    end
    if i == 3 then
      re += 1
      raise "This is an exception"
    end
    puts i
  end
rescue
  retry
end
# 1
# 2
# 1
# 2

ここで使ったbegin...rescue...endは他のプログラミング言語で良く使ってるtry...catch文法で、begin...rescue中でエラーが発生すると、rescue...end中が実行されます。

今回の例題ではraiseを使って強制的にエラーを発生させって、retryを使えるようにしました。

完了

Rubyで使えるループについて見てみました。また、ループの中でループを制御する方法についても見てみました。retry制御文が少し難しいでしたが、エラーが発生する時、ループを最初から実行させる重要な制御文なので覚えていきましょう。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts