On 12/13/10, Matthias Walter <xa...@xammy.homelinux.net> wrote: > On 12/12/2010 08:43 PM, Andrej M. wrote: >> I can't seem to find an easy remove method in std.algorithm that takes an >> object and a range (an array in this case) and removes any matches from >> the range. I'm using this snippet for now: >> >> private DrawingElement[] elements; >> >> public override void Remove(DrawingElement d) >> { >> foreach (i, child; elements) >> { >> if (child == d) >> { >> elements = remove(elements, i); >> break; >> } >> } >> } > Just want to mention that this code does not remove "any matches", but > only the first one! So if you want all removed, you have to improve it a > bit. > > Matthias >
Yeah that's what the break is for. But that shouldn't be a test for equality either. It should rather be: >> foreach (i, child; elements) >> { >> if (child is d) >> { >> elements = remove(elements, i); >> break; >> } >> } Because I would really need to be looking for a specific object, I think. Anyway it's just some code from some design patterns, demonstration code..