while 条件
文
end
ループを途中で抜ける場合は、break
を使用します。
Ruby では、while not
の省略形として until
が用意されています。
until
の場合は、指定した条件が満たされるまで ループを実行します。
until 条件
文
end
Integer
クラスの times
メソッドを使うと、指定した回数だけループ処理できます。
次のようにすると、変数 i
に 0、1、2 という順番で格納されます。
# 0 から 2 までのループ
3.times do |i|
puts i
end
現在のインデックスが必要ない場合は、変数を省略できます。
# 単純に 3 回くりかえす
3.times do
puts 'こんにちは'
end
下記の例では、for ~ in
の構文に対して Range オブジェクトを渡すことで、指定した整数範囲のループ処理を行っています。
範囲指定時にドットの数を 3 つにすると、ループ回数が 1 回減ることに注意してください。
マイナス方向へのループ処理も行えます。
# 0 から 3 までのループ
for i in 0..3 do
puts i
end
# 0 から 2 までのループ
for i in 0...3 do
puts i
end
# 3 から 0 までのループ
for i in 3..0 do
puts i
end
# 3 から 1 までのループ
for i in 3...1 do
puts i
end
列挙可能なオブジェクトには、多くの場合 each
メソッドが用意されています。
下記は、Range オブジェクト、あるいは配列の each
メソッドを使用する例です。
(0..9).each do |i|
puts i
end
['a', 'b', 'c'].each do |i|
puts i
end
指定した範囲の文字でループさせることも簡単にできます。
('a'..'f').each {|char| print char } #=> abcdef
Numeric クラスの step
メソッドを使用すると、小数幅でのループを実現できます。
0.step(0.5, 0.1) do |x|
printf "%.1f ", x
end
0.0 0.1 0.2 0.3 0.4 0.5
マイナス方向へのループも行えます。
0.step(-0.5, -0.1) do |x|
printf "%.1f ", x
end
0.0 -0.1 -0.2 -0.3 -0.4 -0.5