こんにちは!エンジニア兼ライターのヤマシタです。
Rubyにはさまざまな繰り返し処理が用意されています。
ここでは、
「条件が真(true)になるまで繰り返し処理を行いたい」
といった人に向けて、until文の使い方について、
【基礎】until文の基本的な使い方
【基礎】until文で無限ループする方法
【発展】until文で配列の値を取得する方法
【発展】さまざまな繰り返し処理
などについて解説いたします。
until文は条件式を指定することによって、繰り返し処理を行うことができますので使い方については理解しておきましょう。
until文とは
until文はRubyの繰り返し処理の1つで、条件が偽(false)である限り繰り返し処理を行い、上限が真(true)になったら繰り返し処理を終了します。
until文は以下のように記述します。
until 条件式 do 繰り返し実行する処理 end
よく似た処理としてwhile文がありますが、違いとして
- while文は真(true)の間繰り返す
- until文は偽(failse)の間繰り返す
と覚えておきましょう。
while文については、以下の記事で詳しく解説しています。
untilの使い方
実際にuntil文の使い方を見ていきましょう!
untilの基本的な使い方
以下のプログラムでは値が5になるまで繰り返し処理を行います。
サンプルプログラム:
num = 1 until num ==5 do p num num +=1 end
実行結果:
1 2 3 4
このように値が5になるまではuntilの条件式はfalseになりますので、繰り返し処理が続行され、5になった時点でtrueとなり繰り返し処理が終了します。
※注意点として、until文は条件式がtrueになるまで繰り返し処理を行いますので、式は無限ループにならないように気をつけましょう。
無限ループ
until文は条件がfalseの間、do〜endの繰り返し処理を行います。
そのため、意図的に無限ループを行いたい場合は条件式に「false」を指定します。
until false do p “loop!” end]
実行結果:
“loop!” “loop!” “loop!” “loop!” “loop!” 〜
このように無限に処理が実行されます。
untilで配列の要素を取得する
untile文で配列の要素を取得したい場合は、配列の要素を1つずつ取得するためのインデックスと、配列の要素数をlengthメソッドを使用して取得しておく必要があります。
サンプルプログラム:
cnt = 0 fruits = [ "apple", "banana", "melon" ] until cnt == fruits.length do p fruits[cnt] cnt+=1 end
実行結果:
"apple" "banana" "melon"
このサンプルでは、インデックスcntが配列の要素に達する(true)まで、繰り返し処理を行い、配列の値を1つずつ取得しています。
さまざまな繰り返し処理
Rubyではさまざまな繰り返し処理が用意されています。
以下の記事では、Rubyのループ処理をまとめていますのでぜひ参考にしてください!
まとめ
ここでは、条件がfalseの間繰り返し処理を行うuntil文について、
- until文とは
- until文の基本的な使い方
- until文で無限ループする方法
- until文で配列の値を取得する方法
- さまざまな繰り返し処理
などについて解説しました。
until文はwhile文と同じく条件式で繰り返し処理を行うときに便利ですので、使い方はしっかりと理解しておきましょう。
もし、until文の使い方を忘れてしまったら、この記事を思い出してくださいね!