0
我注意到奇怪的行爲。 雖然這一個運行正常:奇怪的紅寶石陣列測試
@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
不知何故,此代碼,「記住」舊陣列,並試圖完成之前的「如果」聲明:
@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 4 5?
我知道,在第二個測試中,我運行每個元素,但爲什麼它試圖完成舊陳述?
因爲你在遞歸地調用這個方法。 –
只是注意到了。大聲笑,大部分編碼的週末;) –