people = %w(高橋 田中 谷口) idx = 0 people.each do |person| puts "#{idx}: #{person}" idx += 1 end #=> 0: 高橋 #=> 1: 田中 #=> 2: 谷口 people.each_with_index do |person, idx| puts "#{idx}: #{person}" end #=> 0: 高橋 #=> 1: 田中 #=> 2: 谷口 people.each.with_index(0) do |person, idx| puts "#{idx}: #{person}" end #=> 0: 高橋 #=> 1: 田中 #=> 2: 谷口 people.each.with_index(5) do |person, idx| puts "#{idx}: #{person}" end #=> 5: 高橋 #=> 6: 田中 #=> 7: 谷口
each_with_index
はブロック変数の2個目に0から始まる添え字を突っ込む。冒頭の例、each
内でidx
という変数をこねくり回すのと同じ動きだ。
each.with_index(start)
は、ブロック変数の2個目に任意の数値から始まる添え字を突っ込む。0を指定すれば0からカウントするし、5を指定すれば5からカウントする。