1 から 100 迄出力する Ruby コードいろいろ
1.upto(100) { |n| puts n } # -- (1)
(1..100).step { |n| puts n } # -- (2)
(1..100).to_a.each { |n| puts n } # -- (3)
100.times { |n| puts n + 1 } # -- (4)
n = 1 loop do break if n > 100 puts n n += 1 end # -- (5)
for n in 1..100 puts n end # -- (6)
n = 1 while n <= 100 puts n n += 1 end # -- (7)
n = 1 until n > 100 puts n n += 1 end # -- (8)
他にもあるだろうけど、ちょっとばっかし考えた中では 8 つあった。
1..5 まではブロックを受け取るメソッドを、6.. からは制御構文を使ったものだ。
# loop も制御構文の 1 つだと思ってた私が通りますよ。
## ただのグローバルメソッドなのかな?
1. Integer#upto
レシーバから引数まで、足し上げるそうな。
self を返すけど、変わってないのでちょっととほほ。
upto! とかもしあったら足し上げられたのが返ってくるのかな。
2. Range#step
Range オブジェクトの初めから最後までを引数おきに繰り返すそうな。
綺麗だし、わかりやすいのでよく使ってた。
3. Array#each
要素全てに対してブロックを評価するよ!
うん。
これだけは覚えてくれってくらいの便利メソッド。
半端無く使う。
4. Integer#times
self 回だけ繰り返すってさ。
これもよく使ってた。
注意して欲しいのが、0 から繰り返すってこと。
で、
5..8 の制御構文とよく見たら違うような気がするんだけどただ書いてないだけかもなのは
ぶっちゃけた話、全然使わないんだよね。