Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^3: OO Pattern Container x Elements and Method Chaining

by jdporter (Paladin)
on Oct 08, 2021 at 15:52 UTC ( [id://11137356]=note: print w/replies, xml ) Need Help??


in reply to Re^2: OO Pattern Container x Elements and Method Chaining
in thread OO Pattern Container x Elements and Method Chaining

Ok, but in that case, neither form - with or without the temporary variable - will achieve that. Nothing special gets communicated through method chaining. At least not in POP.

  • Comment on Re^3: OO Pattern Container x Elements and Method Chaining

Replies are listed 'Best First'.
Re^4: OO Pattern Container x Elements and Method Chaining
by LanX (Saint) on Oct 08, 2021 at 16:02 UTC
    as I said $cont->get_elem('one') can return another object belonging to a wrapper class "MemberElement" dynamically cloned from $elem0 and enriched with the container info.

    MemberElement could inherit from Element to make sure all methods are transparently available or use AUTOLOAD to delegate methods to $elem0

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    Wikisyntax for the Monastery

      yes, sure, that's all cool.... but I don't believe that has any bearing on method chaining.

        For instance see https://atomicobject.com/resources/oo-programming/other-oo-class-relationships

          Association implies symmetry; both classes know each other and can message each other.

          A Product class object may need to know the last sale that it was involved with. We could put a pointer to a Sale class object inside the private part of Product.

          A Sale class object may need to know all of the Products involved with the Sale. We can put a pointer to a pointer (double pointer) in Sale that will let us store zero or more Products associated with a Sale.

        hence this is not uncommon

        $stock->product("Book")->lastSale()->undo()

        and affects both objects

        update

        a maybe better example I found is the part_of association of Apartment <-> Room

        A $room can only belong to one containing $apartment and has a (weakened) back-reference

        Like this if $room->burns() than $apartment->burns()

        > but I don't believe that has any bearing on method chaining.

        $street->apartment("5a")->room("living")->burns()

        HTH! :)

        Cheers Rolf
        (addicted to the Perl Programming Language :)
        Wikisyntax for the Monastery

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11137356]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (2)
As of 2024-04-20 11:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found