があります。要素の数を増やし、ループ内の反復の現在のインデックスを含めれば、より大きな画像を見ることができます。
arr = [1,2,3,4,5,6,7,8,9]
arr.each_with_index do |x,ix|
puts "loop1: #{arr.inspect}, x: #{x}, ix: #{ix}"
arr.each_with_index do |y, iy|
puts "loop2: #{arr.inspect}, y: #{y}, iy: #{iy}"
puts "#{arr.delete(y)}"
end
end
結果
loop1: [1, 2, 3, 4, 5, 6, 7, 8, 9], x: 1, ix: 0
loop2: [1, 2, 3, 4, 5, 6, 7, 8, 9], y: 1, iy: 0
1
loop2: [2, 3, 4, 5, 6, 7, 8, 9], y: 3, iy: 1
3
loop2: [2, 4, 5, 6, 7, 8, 9], y: 5, iy: 2
5
loop2: [2, 4, 6, 7, 8, 9], y: 7, iy: 3
7
loop2: [2, 4, 6, 8, 9], y: 9, iy: 4
9
loop1: [2, 4, 6, 8], x: 4, ix: 1
loop2: [2, 4, 6, 8], y: 2, iy: 0
2
loop2: [4, 6, 8], y: 6, iy: 1
6
=> [4, 8]
もしループ中インデックス各反復がインクリメントされるが、配列は一つの要素短い後削除されるので、それは次の(およびすべての)マッチングを削除するため要素が利用可能であり、最後にループが比較してループを停止するときindex >= length
適切な回答を承認してください – bronislav
@bronislav、それに時間をください。 1時間しかありません。急いではありません。 –
@CarySwoveland、ごめんなさい – bronislav