配列内の値だけを順番に処理したい場合は、Array#each を使用するのが一番簡単です。
arr.each {|x| puts x}
arr.reverse_each {|x| puts x} # 逆順に処理
ループ中にインデックスも同時に使いたい場合は、Array#each_with_index が使えます。
arr.each_with_index do |val, i|
puts "#{i}: #{val}"
end
0: elem1
1: elem2
2: elem3
C 言語風に、インデックスベースでループを回したい場合は、upto、for~in、times など、いろいろな方法が使えます。
0.upto(arr.size-1) {|i| puts arr[i] }
for i in 0...arr.size
puts arr[i]
end
配列サイズ−1
のインデックスまでループさせるために、ドットの数は 3 つになることに注意してください。ドットの数を 2 つにすると、配列サイズと同じインデックス位置の要素までアクセスしてしまいます(結果として最後に nil
が取得される)。
ドット 1 つで動作が変わるので、ちょっと怖いですね…。
arr.size.times {|i| puts arr[i] }
times
のブロックに渡されるパラメータは 0
からスタートするので、配列インデックスとして使用できます。