Rubyのループって便利ですよね!!
timesとか簡単に回数指定してかけるし、 日付の配列を作ってループさせたりできるし。
というわけでRubyのループの構文に絞って紹介していきます。
While 文
while文。 条件式がTrueである限りループし続けます。 ある一定の条件で抜けたい場合は、breakを挿入します。idx = 0
while idx < 2 do
pp idx
end
Times 文
Times文。 指定した回数だけ処理を繰り返す事ができます。 下に紹介した例ではidxは 0,1,2,3・・・・108となります。108.times do |idx|
pp "ボーン"
end
for 文
for文。 指定した回数だけ処理を繰り返す事ができます。 下に紹介した例ではidxは a,b,c~zとなります。 う〜ん便利。これでアルファベットを覚えずにすみますね。for alphabet in 'a'..'z' do
printf "#{alphabet}\n"
end
each 文
いわゆるforeach文ですね。
array = [ "I", "Have" , "A" , "Pen!!!" ]
array.each do | val |
p array
end
ハッシュについて使ってあげると 添え字も取得できます。
h = {
"セ・リーグ" => [ "巨人", "阪神", "中日" , "ヤクルト" , "広島","横浜" ],
"パ・リーグ" => [ "ソフトバンク", "ロッテ", "日ハム" , "オリックス" , "西武","楽天" ]
}
h.each do | key , val |
p key
p val
end
$ruby test.rb
"セ・リーグ"
["巨人", "阪神", "中日", "ヤクルト", "広島", "横浜"]
"パ・リーグ"
["巨人", "阪神", "中日", "ヤクルト", "広島", "横浜"]
これは大分使います!!
step , upto , downto
upto は以下のように書くと20~30まで実行というようになります。20.upto(30) do |idx|
p idx
end
downto というのもある
20.upto(30) do |idx|
p idx
end
さらに極め付けはstepです。 1から100までは2つずつカウントしてくれます。
1.step(100, 2) do |odd|
p odd
end
おまけ
個人的にすごいなと思うのは 日付、時刻のカウントですかね。例) 1~3月の日付を全て表示
require "date"
jan = Date.parse("2017/1/1")
march_end = Date.parse("2017/3/31")
(jan..march_end).each do | day |
p day.strftime("%Y/%m/%d")
end
例) 1日を30分単位で出力
require "time"
first = Time.parse("2017/1/1 00:00:00")
last = Time.parse("2017/1/1 23:59:59")
(first.to_i..last.to_i).step( 30 * 60 ) do | t |
p Time.at(t)
end
以上!!