Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

Ruby辞典

  1. トップページ
  2. Ruby辞典
  3. 数値.times / upto / downto / step

数値.times / upto / downto / step

整数が持つ反復処理メソッドです。指定した回数だけループしたり、数値の範囲を昇順・降順に繰り返したりできます。

構文
# n回繰り返します(0から n-1 まで)。
n.times { |i| 処理 }

# start から stop まで1ずつ増やしながら繰り返します。
start.upto(stop) { |i| 処理 }

# start から stop まで1ずつ減らしながら繰り返します。
start.downto(stop) { |i| 処理 }

# start から stop まで step ずつ増やしながら繰り返します。
start.step(stop, step) { |i| 処理 }
メソッド一覧
メソッド概要
n.times { |i| }0からn-1までの整数をブロックに渡しながらn回繰り返します。
start.upto(stop) { |i| }startからstopまで1ずつ増やしながら繰り返します。stopより大きくなると終了します。
start.downto(stop) { |i| }startからstopまで1ずつ減らしながら繰り返します。stopより小さくなると終了します。
start.step(stop, step) { |i| }startからstopまでstep刻みで繰り返します。浮動小数点のステップも使えます。
サンプルコード
# times: 指定した回数だけ繰り返します。
3.times { |i| print "#{i} " }
puts  # 0 1 2

# インデックスが不要なら省略できます。
3.times { print "★ " }
puts  # ★ ★ ★

# upto: 昇順に繰り返します。
1.upto(5) { |i| print "#{i} " }
puts  # 1 2 3 4 5

# downto: 降順に繰り返します。
5.downto(1) { |i| print "#{i} " }
puts  # 5 4 3 2 1

# step: ステップを指定して繰り返します。
1.step(10, 2) { |i| print "#{i} " }
puts  # 1 3 5 7 9

# 浮動小数点のステップも使えます。
0.0.step(1.0, 0.25) { |f| print "#{f} " }
puts  # 0.0 0.25 0.5 0.75 1.0

# 実用例: カウントダウン。
puts "カウントダウン開始!"
5.downto(1) { |i| puts "#{i}..." }
puts "発射!"
概要

Rubyでは整数自体がイテレータメソッドを持っており、『for』文や『while』文を使わなくてもシンプルなループを書けます。これはRubyが「すべてがオブジェクト」という設計方針を持つからです。

『times』はブロックにインデックス(0始まり)が渡されます。インデックスが不要な場合はブロック変数を省略してください。『upto』と『downto』はそれぞれ開始値から終了値まで1刻みで繰り返します。

『upto』で開始値が終了値より大きい場合、またはstopがstartより大きく負のstepを指定した場合、ブロックは一度も実行されません。意図した範囲を確認してから使用してください。

範囲オブジェクトを使ったループは『範囲.step』でも実現できます。整数の判定メソッドは『数値.even? / odd? / zero?』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。