Integer#timesはInteger#stepの特別なケース

http://d.hatena.ne.jp/piyo2-moko/20080306#1204811429

5.times{
  print"momo?\n"
}

を「five times { 処理 }」と英語読みできるところに美しさを感じてほしい。字面の通り「5回処理する」と読める。whileループでも書けるけど、絶対こっちのが読みやすい。


ループ系ブロック付きメソッド三兄弟は、

「M.times{|i| 処理 }」:0〜M-1の範囲で1ずつ増加(だからM回の繰り返しということになる)

「M.upto(N){|i| 処理 }」:M〜Nの範囲で1ずつ増加

「M.step(N,S){|i| 処理 }」:M〜Nの範囲でSずつ増加

の順番に汎用化していく。
一番最初に覚えたループ系のブロック付きメソッドがInteger#stepだったから難しく感じたのかも…

ブロックというのは「{|ブロック引数| 処理}」や「do |ブロック引数| 処理 end」のことね。2通りの書き方があるが意味は同じ。ブロック引数は使わないときは省略可能だ。