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