Rubyのループ構文にはいくつか種類がありますが、その中でも特に独特なのが begin…end while 構文です。この構文は通常の while ループとどう違うのか、条件が偽の場合でも本当に1回はブロックが実行されるのか、具体例を交えて解説します。
begin…end while構文の基本
Rubyにおける begin…end while は後置条件ループと呼ばれます。通常の while ループは条件を先に判定しますが、begin…end while はブロックを先に実行し、その後条件を評価します。
例えば以下のように書きます。
i = 0
begin
puts i
i += 1
end while i < 3
この場合、0から2までが順に出力されます。条件が偽になった後も、ブロックは少なくとも1回実行されることに注意してください。
条件が偽でもブロックは1回実行される理由
後置条件ループの特徴として、条件判定がループの最後に行われる点があります。したがって、最初に条件が偽であっても、ブロック本体は必ず1度は実行されます。
例えば。
count = 5
begin
puts "実行されます"
end while count < 0
このコードでは、条件 count < 0 は偽ですが、”実行されます” は1回だけ出力されます。
通常の while ループとの違い
通常の while ループでは、条件が最初に偽であればブロックは一度も実行されません。
例。
count = 5
while count < 0
puts "実行されません"
end
この場合、条件が偽なので、ブロックは一度も実行されません。ここが begin…end while の大きな違いです。
実務での使用例と注意点
begin…end while は少なくとも1回は処理を実行したい場合に便利です。例えばユーザーからの入力を少なくとも1回受け取る場合などに適しています。
ただし、条件が変わらない場合に無限ループになる可能性があるため、条件設定には注意が必要です。
まとめ
Rubyの begin…end while は後置条件ループであり、条件が偽であっても必ず1回はブロックが実行されます。通常の while ループとは挙動が異なるため、使い分けを理解しておくことが大切です。
条件を最初にチェックするか、後でチェックするかで処理結果が変わる場合があるので、コードを書く際には意図を明確にすることをおすすめします。


コメント