概要
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
制御文が少し難しいでしたが、エラーが発生する時、ループを最初から実行させる重要な制御文なので覚えていきましょう。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。