Ruby - 繰り返しいろいろ
おもな繰り返し構文・メソッド
times
繰り返したい処理の回数が既に決まっている場合に使用すべきメソッド。
基本構文
繰り返し回数.times do 処理 end
また、doを省略して{}
で囲ってあげる書き方も可能。これは、eachも同じですね。
繰り返し回数.times { 処理 }
timesの処理の中で、何度目の処理かを知るためには、以下のように書けば、指定した変数に繰り返し回数が数値で参照できるようになる。
繰り返し回数.times do |変数| 処理 end
具体的に書くと、以下の様なかたち。
5.times do |i| puts "#{i}:進捗どうですか" end
0:進捗どうですか 1:進捗どうですか 2:進捗どうですか 3:進捗どうですか 4:進捗どうですか
for文
特徴的な点としては、範囲オブジェクトを使用する(in 開始時数値..終了時数値
がそれ)と開始時の数値と終了時の数値を直感的に指定できる。でもRubyでfor文ってあまりメジャーではないっぽい。
基本構文
オーソドックスなfor文
for 変数 in オブジェクト do 処理 end
doは省略できる。 オブジェクトには配列やハッシュを指定できる。
sushi = %w(まぐろ いくら たまご サーモン しめさば) for neta in sushi puts "時速120kmで#{neta}が流れてきた!" end
時速120kmでまぐろが流れてきた! 時速120kmでいくらが流れてきた! 時速120kmでたまごが流れてきた! 時速120kmでサーモンが流れてきた! 時速120kmでしめさばが流れてきた!
範囲オブジェクトを使ったfor文
for 変数 in 開始時数値..終了時数値 処理 end
例として50から100までの数値を加算するfor文を書くと以下の様なかたち。
sum = 0 for i in 50..100 sum += i end p sum #=> 3825
while文
作り方によってどのようなタイプの繰り返しでも対応できるwhile文。
基本構文
while 条件 do 処理 end
doは省略可能。 whileは他言語と同様に条件が成り立っている間はループし続ける。
i = 0 while i < 5 puts "寿司をたべた。(#{i}個目)" i += 1 end
寿司をたべた。(0個目) 寿司をたべた。(1個目) 寿司をたべた。(2個目) 寿司をたべた。(3個目) 寿司をたべた。(4個目)
iを1ずつ加算しないと大変なことになる(わりと忘れやすい)、for文で範囲オブジェクトを使ったほうが直感的でわかりやすいので、こういった場合はfor文を書いたほうが良さそうです。
until文
if文に対してunless文があるように、while文に対してuntil文がある。 until文は条件が成立するまで繰り返す。
基本構文
until 条件 do 処理 end
doは省略可能。 さきほど書いたwhile文の例をuntil文に書き直してみる。
i = 0 until i >= 5 puts "寿司をたべた。(#{i}個目)" i += 1 end
寿司をたべた。(0個目) 寿司をたべた。(1個目) 寿司をたべた。(2個目) 寿司をたべた。(3個目) 寿司をたべた。(4個目)
カウンタの処理が寿司を食べた後にあるため、iが5になった
ときは既に寿司を5つ食べていることに注意する。いっつも何回かデバッグして確認してフィーリングで合わせていくことが多いけど(ちゃんと考えよう)。
eachメソッド
azuuun-memorandum.hatenablog.com
既に記事としているため、省略。
loopメソッド
終了条件のないループ、究極までに無駄が削ぎ落とされたシンプルな繰り返しメソッド。ただそれゆえに、終了しないのでbreakしないと死ぬ。もし、繰り返しが止まらなくて涙目状態になった場合、[Ctrl] + Z
か[Ctrl] + C
で終了させることができる。
基本構文
loop do 処理 end
主に繰り返しを制御するための命令としてbreak
とnext
がある(正確にはredo
もあるが、使われない)。
- break
- 繰り返しを中断して, 繰り返しの中から抜ける
- next
- 次の回の繰り返し処理に飛ぶ
まとめ
ここで取り上げた繰り返し文やメソッドをその時々でベストなものを選択し、使うことが重要になる。
- 回数が決まっている! => times
- オブジェクトから要素を取り出して使いたい! => for, each
- 条件を自由に指定したい! => while
- こうなったら抜けろ!という条件のときに => until
- 回数制限がない! => loop
参考
- 作者: 高橋征義,後藤裕蔵,まつもとゆきひろ
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/02/26
- メディア: 単行本
- この商品を含むブログ (1件) を見る