はじめてのRuby!until文を使った繰り返し処理を紹介

こんにちは!エンジニア兼ライターのヤマシタです。

Rubyにはさまざまな繰り返し処理が用意されています。

ここでは、

「条件が真(true)になるまで繰り返し処理を行いたい」

といった人に向けて、until文の使い方について、

【基礎】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文の使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。