制御構造
条件分岐
if
unless
case
繰り返し
while
until
for
break
next
redo
例外処理
begin
rescue
raise
retry
その他
return
BEGIN
END
参考:
繰り返し処理
for ... in ... do ... end
参考:
繰り返し処理について (for, while, until, each, time, loop) | TASK NOTES
for 文 – ちょっと便利な繰り返し処理の構文とは? | Build Insider
for 文のサンプル (break / continue) | ITSakura
条件分岐 (if 式)
if ... elsif ... else ... end
else if
ではなく elsif
を使うのは、最後の end
を一つで済ませるため。
if obj.is_a?(A) then puts "This is A." elsif obj.is_a?(B) then puts "This is B." else puts "This is unknown." end
else if
を使ってインデントを正しく取って書いた場合は以下のようになる。
if obj.is_a?(A) then puts "This is A." else if obj.is_a?(B) then puts "This is B." else puts "This is unknown." end end
else if
を同じ行に書いた場合には次のようになるが、end
は二つ必要である。
if obj.is_a?(A) then puts "This is A." else if obj.is_a?(B) then puts "This is B." else puts "This is unknown." end; end
参考:
複数の条件分岐 (if…elsif…else…end) | Let’s プログラミング
ruby unless 文に elsif はないよ – Qiita
Can I use `else if` over `elsif`? – Stack Overflow
do … end
参考:
do … end と { … } の違い | おもしろ web サービス開発日記
next / break / redo
next
:次の繰り返しの実行に移る。break
:ループの実行を中断する。redo
:現在と同じ条件の繰り返しをもう一度行う。
参考:
Ruby の next, break でよく分かってなかったこと | dunno logs
break, next, redo の違い | Worth Living
多重ループを抜ける (throw / catch)
参考:
Ruby で多重ループを抜ける方法 | 或るプログラマの開発日記
ruby で多重ループを抜ける3つの方法を速度比較してみた | sonots:blog