in reply to Re^2: OO: how to make a generic sub (use roles or inheritance)
in thread OO: how to make a generic sub

"I think its is worth noting that Roles can be simply implemented using basic Perl5 mechanisms"

Ultimately all of Moose can be implemented using basic Perl5 mechanisms. (Because all of Moose is implemented using basic Perl5 mechanisms!)

Yes, this aspect of roles is basically just importing. But Role::Tiny also gives you method conflict checking out of the box (i.e. if you compose two roles with the same method name into the same class, you don't get a random choice, you get an error). And it provides nice integration with Class::Method::Modifiers if you happen to have it installed.

package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
  • Comment on Re^3: OO: how to make a generic sub (use roles or inheritance)

Replies are listed 'Best First'.
Re^4: OO: how to make a generic sub (use roles or inheritance)
by BrowserUk (Patriarch) on Jun 27, 2013 at 20:45 UTC
    Ultimately all of Moose can be implemented using basic Perl5 mechanisms. (Because all of Moose is implemented using basic Perl5 mechanisms!)

    Yes, but it was the "simply implemented " bit I was drawing attention to.

    It begs the question about the weight of Moose.

    But Role::Tiny also gives you method conflict checking out of the box

    That also can be done lightly:

    It's not that it isn't convenient to have these small things done via a module; it's that whenever I peek inside those modules, they always seem to be implemented in such complex fashion. Both in their own code and that of the number and weight of their dependencies. It just all adds up to make things slow and cumbersome.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.