0
나는 이상한 행동을 느꼈다. 이 일이 예상대로 실행되는 동안 : 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?
두 번째 테스트에서는 각 요소마다 각각을 실행하지만 이전 명령문을 완료하려고하는 이유는 알고 있습니까?
이 메서드는 재귀 적으로 호출하기 때문에 –
그냥 그 것으로 나타났습니다. LOL, 주말 코딩 많은;) –