[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]

Re: On Pseudohashes



On Mon, Jan 17, 2000 at 03:28:03PM +0100, Raphael Manfredi wrote:
> Quoting tchrist@chthon.perl.com:
> :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.
> 
> I fail to see how AUTOLOAD is connected to this problem. Even if B did
> not have an autoloaded m(), then A's m() would be used, since Perl
> looks up the tree starting with B, in a depth-first order.

If no package declared m() then a search for AUTOLOAD would be
done. AUTOLOAD would be looked up in D B A C, so if B defined AUTOLOAD
and D did not then B::AUTOLOAD would be called.

Graham.


References to:
Tom Christiansen <tchrist@chthon.perl.com>
Raphael Manfredi <Raphael.Manfredi@st.com>

[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index][Thread Index][Top&Search][Original]