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

cached: 10/23/2018 12:51:02.000 PM