我注意到奇怪的行为。虽然这个按预期运行:
@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
不知何故,这段代码“记住”了旧数组并尝试完成之前的“if”语句:
@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 ?
我知道在第二次测试中,我在每个元素上运行每个,但为什么它试图完成旧语句?