2012-09-02 4 views
6

왜이 코드가 루비를 '잠근다'는 겁니까? 그리고 그것을 극복하는 가장 좋은 방법은 무엇입니까? 아래에 내 솔루션을 게시했습니다. 이것을 할 또 다른 방법이 있습니까? 미리 감사드립니다!반복 중에 배열에 추가

코드 :

nums = [1, 2, 3] 
nums.each { |i| nums << i + 1 } 

내 솔루션 :

각각 열거를 사용합니다 (그래서 당신이 그것에 계속 추가 할 경우 최종 도달하지 않음) 때문이다
nums = [1, 2, 3] 
adjustments = [] 
nums.each { |i| adjustments << i + 1 } 
nums += adjustments 

답변

8

.

각각을 적용하기 전에 어레이를 복제 할 수 있습니다.

nums = [1, 2, 3] 
nums.dup.each { |i| nums << i + 1 } 

또 다른 방법은지도에 의해 주어진 추가 요소를 추가하는 것입니다 : 당신은 당신이 그것을 반복하고 같은 배열에 추가하고, 그렇게하는

nums = [1, 2, 3] 
nums += nums.map { |i| i + 1 } 
+0

+1 와우 .. 이제는 완전히 의미가 있습니다! 감사! – Dru

4
nums = [1, 2, 3] 
nums.each { |i| nums << i + 1 } 

는 결코 실행되지 완료.

+0

+1 감사합니다. 나는 지금까지 연결을 만들지 않았다. – Dru