0

オブジェクトバン内の配列を反復処理しています。配列の要素を別のオブジェクト配列にポップしようとしています。下記参照。

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

def removebike
   @bikes.pop   
end

これを行うと、ガレージの結果の配列に要素が欠落しているか、要素が重複しています。

4

2 に答える 2

0

これは、rubyが配列を反復処理するときに、元の配列サイズに基づいて反復回数を設定するためです。その配列から要素をポップすると、サイズが変更されるため、反復が正しく機能しません。

代わりに使用できます、

@van.bikes.count.times { @garage<<( @van.removebike )} 
于 2013-03-09T12:03:30.347 に答える
0

これも試すことができます..

@garage = []
@van.bikes.each{|bike| @garage << bike}
于 2013-03-09T12:18:18.370 に答える