Modifying an array while enumerating over it - no matter what method you're using - is not a good idea.
Also, if you just want to remove everything in an array: array = ['a', 'b', 'c'] array.clear array #=> [] Cheers -- Pat On 14/10/2009, at 6:48 PM, James Miller wrote: > Your explanation got me thinking that iterating in reverse might > work...it does! > > array = [ "a", "b", "c" ] > array.reverse_each do |item| > array.delete(item) > end > > array => [] > > Sweeeet.... > > On Wed, Oct 14, 2009 at 9:40 AM, James Miller > <[email protected]> wrote: > Kerry - I ended up just creating a new array and adding elements to > it that I do want, which works fine. Thanks for the explanation, > makes sense. > > David - Thanks for the explanation as well. There's more code > involved in the actual implementation, where the array will > sometimes still contain items and sometimes be emptied in the > iteration. My example was just to simplify and show the weirdness > when trying to empty the array via iteration rather than just > setting to []. > > Thanks, > James > > > On Wed, Oct 14, 2009 at 9:31 AM, Kerry Foley > <[email protected]> wrote: > > Hi James, > Strange right? Well, when you call delete within the loop it confuses > each. The first time in you delete "a". The second time in you go to > the > 2nd element of the array, which is now "c" (not "b"). So you delete > "c" > and are left with array => ["b"]. > > I assume you are are doing other things within the loop so one way > is to > save the items you want to delete into another array i.e. > to_be_deleted > and then do the deleting once you have exited the loop. > > Regards, > Kerry > > James Miller wrote: > > Hi Everyone, > > > > Wondering if someone could explain why this doesn't work as (I) > > expected... > > > > array = [ "a", "b", "c" ] > > > > array.each do |item| > > array.delete(item) > > end > > > > array => [ "b" ] > > > > Why isn't the array empty ( array => [] )? Is there a better > approach? > > > > Thanks, > > James > > > > > > > > > > > > > > > --~--~---------~--~----~------------~-------~--~----~ SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby -~----------~----~----~----~------~----~------~--~---
