in reply to Re: Avoiding circular references
in thread Avoiding circular references
it's a good idea for it to avoid closing over $self.
[I didn't study the OP's code, so this may or may not be pertinent, but I think it is.]
When you have an object that calls a callback, it's a good idea to pass the object to the callback as an argument.
For example, say there's a class that calls a function periodically.
The following exhibits a circular reference:
my $timer; $timer = Timer->new( callback => sub { ... if (...) { $timer->cancel; } ... }, period => 5, )
The following doesn't exhibit a circular reference:
my $timer = Timer->new( callback => sub { my ($timer) = @_; ... if (...) { $timer->cancel; } ... }, period => 5, )
The latter requires that Timer passes a reference to itself to the callback.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: Avoiding circular references
by ikegami (Patriarch) on Dec 06, 2019 at 22:27 UTC | |
by ikegami (Patriarch) on Dec 06, 2019 at 22:37 UTC |