Seems like a good use case for Array#reject. Hard to say without  
seeing your code but if your goal is to use some logic to determine if  
you should delete each object, then #reject is your man for the job.  
Hope that helps.

Martin

On Oct 14, 2009, at 9:40, 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to