[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]
Re: On Pseudohashes
On Mon, Jan 17, 2000 at 07:08:52AM -0700, Tom Christiansen wrote:
> >It's always been advisable for classes to pre-declare all their methods
> >if using AUTOLOAD.
>
> Tim, some time ago something came up about autoloading method calls
> that bothered me in an MI scenario. Seems to me you respondedi
> similarly then. I'm pretty sure it was the following inheritance
> scenario:
>
> A
> \
> B C @B::ISA = ('A');
> \ /
> D @D::ISA = ('B', 'C');
>
> Suppose that each of those classes were using autoloading to generate
> its attribute accessors. If D->m() is called, and that method m()
> is really supposed to be handled iby C, there's no way for B's
> autoload to "super" it over to C. Instead, B::SUPER just gets to
> ascend to A--which doesn't help. You can never renege on an AUTOLOAD
> so that Perl's method lookup would treat that hit as a miss and
> then go on to inspect sibling branches of the tree.
>
> Does pre-declaring methods to be handled via AUTOLOAD entirely clear
> this matter up?
Yes. If C had declared
sub m;
Then during the initial method lookup it would be found and AUTOLOAD
would be called in C, and so B::AUTOLOAD would never get called.
- References to:
-
Tim Bunce <Tim.Bunce@ig.co.uk>
Tom Christiansen <tchrist@chthon.perl.com>
[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]