Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
オブジェクトバン内の配列を反復処理しています。配列の要素を別のオブジェクト配列にポップしようとしています。下記参照。
@van.bikes.each { @garage<<( @van.removebike )} def removebike @bikes.pop end
これを行うと、ガレージの結果の配列に要素が欠落しているか、要素が重複しています。
これは、rubyが配列を反復処理するときに、元の配列サイズに基づいて反復回数を設定するためです。その配列から要素をポップすると、サイズが変更されるため、反復が正しく機能しません。
代わりに使用できます、
@van.bikes.count.times { @garage<<( @van.removebike )}
これも試すことができます..
@garage = [] @van.bikes.each{|bike| @garage << bike}