0
私は奇妙な動作に気付きました。この1つは期待通りに動作しますが :4、ルビーでの不思議な配列テスト
@a = ['0','1','2','3','4','5']
def test1
@a.each do |i|
puts 'I am at: ' +i.to_s
if i == '2'
puts 'I am removing 2'
@a.delete(i)
test1
end
end
end
I am at: 0
I am at: 1
I am at: 2
I am removing 2
I am at: 0
I am at: 1
I am at: 3
I am at: 4
I am at: 5
I am at: 4
I am at: 5
=> ["0", "1", "3", "4", "5"]
は、なぜそれが4〜5を繰り返しん:
@a = ['0','1','2','3','4','5']
def test2
@a[0..2].each do |i|
puts 'I am at: ' +i.to_s
if i == '2'
puts 'I am removing 2'
@a.delete(i)
licz
end
end
end
I am at: 0
I am at: 1
I am at: 2
I am removing 2
I am at: 0
I am at: 1
I am at: 3
どういうわけか、このコードを、「覚えている」古いアレイと声明「が」前のフィニッシュしようとします5?
2回目のテストでは、それぞれの要素ごとに実行していますが、なぜ古い文を終了しようとしているのですか?
あなたはこのメソッドを再帰的に呼び出すためです。 –
ちょうど気づいた。週末のコーディングの多くに、笑); –