繰り返し処理のまとめ

久々にrubyでプログラミングをすると、基礎中の基礎なのに忘れていることがあるので、まとめました。

基本のfor文

他の言語では基本中の基本だけど、rubyではほとんど使わない(と思う)。

for x in 1..3
  puts x           # => 1 2 3
end

# これは3を含まない
for x in 1...3
  puts x           # => 1 2
end

無限ループ

while true
  puts "あなたが入力した文字は#{gets}です。"    
end

loop do
  puts "あなたが入力した文字は#{gets}です。"
end

n回の繰り返し

0から始まる

5.times do |x|
  puts x           # => 0 1 2 3 4
end

aからbまで

3.upto(5) do |x|
  puts x           # => 3 4 5
end

(3..5).each do |x|
  puts x           # => 3 4 5
end

# これは5を含まない
(3...5).each do |x|
  puts x           # => 3 4
end

# これは減らす方
5.downto(3) do |x|
  puts x           # => 5 4 3
end

aからbまでcずつ増える

3.step(10,2) do |x|
  puts x           # => 3 5 7 9
end

配列の繰り返し

ary = %w[dog cat pig]
ary.each do |x|
  puts x
end

Javaだと拡張forループの方が可読性が高いので5.0以降よく使っているものの、index情報が欲しい時はそれは叶わず、しぶしぶ旧来のfor文を使うことがある。しかしrubyだとこんな風に要素とindexとを同時に取得することが出来る。覚えておくと便利かも。

ary.each_with_index do |x, i|
  puts "#{i}番目の要素は#{x}です"
end

ハッシュの繰り返し

hs = {:dog=>"", :cat=>"", :pig=>""}
hs.each do |k, v|
  puts "#{k}は日本語で#{v}といいます"
end