Rubyの begin…end while 構文の挙動を徹底解説:条件が偽でもブロックは実行されるのか?

Ruby

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 ループとは挙動が異なるため、使い分けを理解しておくことが大切です。

条件を最初にチェックするか、後でチェックするかで処理結果が変わる場合があるので、コードを書く際には意図を明確にすることをおすすめします。

コメント

タイトルとURLをコピーしました