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
