我在Object van中的數組上迭代。我試圖將數組的元素彈出到另一個對象數組中。見下文。爲什麼我在我的數組中迭代出錯的結果?
@van.bikes.each { @garage<<(@van.removebike)}
def removebike
@bikes.pop
end
當我這樣做時,車庫中的結果數組缺少元素和/或重複元素。
我在Object van中的數組上迭代。我試圖將數組的元素彈出到另一個對象數組中。見下文。爲什麼我在我的數組中迭代出錯的結果?
@van.bikes.each { @garage<<(@van.removebike)}
def removebike
@bikes.pop
end
當我這樣做時,車庫中的結果數組缺少元素和/或重複元素。
原因是,當ruby在數組上迭代時,它會根據原始數組大小設置迭代次數。當您彈出該數組中的元素時,大小會發生變化,因此迭代無法正常工作。
,您可以改用,
@van.bikes.count.times { @garage<<(@van.removebike)}
或者只是'@garage + = @ van.bikes; @ van.bikes = []':) – 2013-03-09 12:05:37
你也可以試試這個..
@garage = []
@van.bikes.each{|bike| @garage << bike}
是否也能提供一流的結構? – 2013-03-09 12:19:19