I don't want to write a lot of subclasses, just a single moosed up package in BodyParts.pm.

Subclasses is the wrong word, you mean "inner" classes perhaps, which you could do within BodyParts.pm (you can have multiple classes per-file).

Also, curry is the wrong word as well, you looking for classes that "autovivify". That is not something Moose supports as Moose is class based OOP and what your talking about here is more akin to prototype based OOP (like Javascript or Self).

But I don't want to write around directives for every accessor I create just to return $self

People have talked about trying to implement this kind of method-chaining in Moose, but currently the accessor generation code is still pretty hairy (the other contributors are actually hacking on it right now as I type), so the simpler way still is to use around.

I think perhaps you need to step back and explain why you want to have so much 'magic' in your class? Do you not know the items that will be in BodyParts? Do you not know the definitions of it's sub-objects? Are you just looking to save on typing? Or perhaps I am misunderstanding your intentions completely and you need to show more code.

-stvn

In reply to Re: curried-up moose by stvn
in thread curried-up moose by rodd

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.