develooper Front page | perl.moose | Postings from April 2018

Re: BUILD and how to create a subclass object when creating a parent

Thread Previous | Thread Next
From:
Arjan Widlak - United Knowledge
Date:
April 25, 2018 20:56
Subject:
Re: BUILD and how to create a subclass object when creating a parent
Message ID:
6131437d-b0de-1ff9-d1b2-403b01b270f0@unitedknowledge.nl
And to also give a diagram, as you ask:

Asset::Container::KDU1        Response1 Response::Summary1
Del-> Asset::Container::KDU2 (6)    Response2 (5) Response::Summary2 (4)
Asset::Container::KDU3 (3)    Response3 (2) Response::Summary3 (1)

Above KDU2 is a child of KDU1, not in terms of classes, but in terms of 
lineage. Like a page and a subpage. A Response is the response of a user 
on a KDU. A Summary is a subclass of Response as described.

Now if I call delete on instance KDU2, I would like to see:

1 deletion of Summary3
2 deletion of Response3
3 deletion of KDU3
4 deletion of Summary2
5 deletion of Response2
6 deletion of KDU2

Kind regards,
Arjan.

On 25/04/18 19:54, Karen Etheridge wrote:
> I'm not sure you mean by create a subclass instance on creation of its 
> superclass. Are you intending to have the superclass object have an 
> attribute that holds an instance of the subclass? Perhaps can you show 
> a diagram of what you intend your data to look like after construction 
> is complete?
>
> On Mon, Apr 23, 2018 at 7:53 AM, Arjan Widlak - United Knowledge 
> <arjan@unitedknowledge.nl <mailto:arjan@unitedknowledge.nl>> wrote:
>
>     Hi,
>
>     I tried to use the BUILD method to create an instance of a
>     subclass on creating an instance of the parent. This does not work
>     and the documentation clearly explains why:
>
>     http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod#BUILD_and_parent_classes
>     <http://search.cpan.org/dist/Moose/lib/Moose/Manual/Construction.pod#BUILD_and_parent_classes>
>
>     BUILD methods are called from parent to child and hence this
>     triggers a loop.
>
>     I am able to do this with the around method modifier, however I
>     need to override the behaviour in the subclass. This is also seems
>     error prone and bad practice.
>
>     But if this cannot be done this way, how should it be done? How
>     can I always create a subclass instance on creation of it's
>     superclass?
>
>     Kind regards,
>
>     Arjan
>
>


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About