2013-03-09 9 views
0

我在Object van中的數組上迭代。我試圖將數組的元素彈出到另一個對象數組中。見下文。爲什麼我在我的數組中迭代出錯的結果?

@van.bikes.each { @garage<<(@van.removebike)} 

def removebike 
    @bikes.pop 
end 

當我這樣做時,車庫中的結果數組缺少元素和/或重複元素。

+0

是否也能提供一流的結構? – 2013-03-09 12:19:19

回答

0

原因是,當ruby在數組上迭代時,它會根據原始數組大小設置迭代次數。當您彈出該數組中的元素時,大小會發生變化,因此迭代無法正常工作。

,您可以改用,

@van.bikes.count.times { @garage<<(@van.removebike)} 
+1

或者只是'@garage + = @ van.bikes; @ van.bikes = []':) – 2013-03-09 12:05:37

0

你也可以試試這個..

@garage = [] 
@van.bikes.each{|bike| @garage << bike} 
相關問題