On Sunday, 18 March 2018 at 16:14:06 UTC, Michael wrote:
On Sunday, 18 March 2018 at 15:42:18 UTC, Andrey Kabylin wrote:
On Sunday, 18 March 2018 at 15:32:47 UTC, Michael wrote:
On Sunday, 18 March 2018 at 14:58:52 UTC, Andrey Kabylin
wrote:
In DList we have method remove, but I can't understand how
this method works, I want write somethink like this:
void unsubscribe(EventsSubscriber subscriber) {
subscribers.remove(subscriber);
}
So I guess you would want something like
subscribers.remove!(a => a == subscriber));
which is the different definition of remove available here:
https://dlang.org/phobos/std_algorithm_mutation.html#.remove.2
Yes this works, thanks!
No problem, glad to help!
Just an FYI:
This didn't work as I expected -- the length of subscribers
didn't change. What I needed here was
subscribers = subscribers.remove!(a => a == subscriber));
Otherwise this sort of behaviour resulted:
// code:
struct A {int i;}
A[] as = [A(1), A(2), A(3)];
writeln("as = ", as);
writeln(remove!(a => a == A(2))(as));
writeln("as = ", as);
writeln(remove!(a => a == A(3))(as));
writeln("as = ", as);
// output:
as = [A(1), A(2), A(3)]
[A(1), A(3)]
as = [A(1), A(3), A(3)]
[A(1)]
as = [A(1), A(3), A(3)]