Removing object while iterating on a LIST
If you already have the object that you want to remove from the LIST
you can easily use prune
and prune_all
. But if you want to remove objects while iterating on that LIST
, depending on criteria on the objects contained in the LIST
, here is what you can do.
First of all, if you think about removing an object while iterating, I do not recommend using an across
loop. If you iterate on the list using a from until loop end
, just remember to use the LIST.forth
only when you do not use LIST.remove
.
For example, let's say we have class MY_CLASS
with an attribute has_stopped
and that I want to remove every object of a LIST
that has this attribute set to True
. Here is what the code will look like.
removing_stopped (a_list: LIST [MY_CLASS]) -- Removing every closed element of `a_list` do from a_list.start until a_list.exhausted loop if a_list.item.has_stopped then a_list.remove else a_list.forth end end end