为什么我在迭代时在我的数组中得到错误的结果?

时间:2013-03-09 12:03:30

标签: ruby arrays

我正在迭代Object van中的数组。我试图将数组的元素弹出到另一个对象数组。见下文。

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

def removebike
   @bikes.pop   
end

当我这样做时,车库中产生的数组缺少元素和/或重复元素。

2 个答案:

答案 0 :(得分:0)

这样做的原因是当ruby在数组上迭代时,它会根据原始数组大小设置迭代次数。当您从该数组中弹出一个元素时,大小会发生变化,因此迭代无法正常工作。

您可以改为使用

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

答案 1 :(得分:0)

你也可以尝试这个..

@garage = []
@van.bikes.each{|bike| @garage << bike}