Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl Monk, Perl Meditation
 
PerlMonks  

Re^2: Abstract Methods in Moose

by crashtest (Curate)
on Dec 11, 2009 at 20:17 UTC ( #812426=note: print w/ replies, xml ) Need Help??


in reply to Re: Abstract Methods in Moose
in thread Abstract Methods in Moose

Hm. I believe the requires is provided by Moose::Role, and hence has the limitations outlined in the documentation.

What it comes down is that while I can use a role to require a method definition directly in a class, I can't "defer" the method definition until later in the class hierarchy. That is, the following would work:

package WidgetRole; use Moose::Role; requires 'get_widget_type'; package AbstractWidget; use Moose; with 'WidgetRole'; sub get_widget_type{ "IAmAbstract" }
but the following (which is what I'd want) wouldn't:
package WidgetRole; use Moose::Role; requires 'get_widget_type'; package AbstractWidget; use Moose; with 'WidgetRole'; package SnazzyWidget; use Moose; extends 'AbstractWidget'; sub get_widget_type{ "BasicWidget" } # throws error and dies

So I don't think roles/using requires is what I am looking for. But maybe I'm wrong - I have all of five days of experience with Moose!


Comment on Re^2: Abstract Methods in Moose
Select or Download Code
Re^3: Abstract Methods in Moose
by Anonymous Monk on Dec 11, 2009 at 21:10 UTC
    imho roles are theabstract part and the class that consumes is muchh more concrete
Re^3: Abstract Methods in Moose
by ikegami (Pope) on Dec 12, 2009 at 21:56 UTC
    Why do you have a role and and a base class? You should use a role instead of a base class. All you need is
    package Widget::Role; # Formerly Widget::Abstract use Moose::Role; requires qw( get_widget_type ); # Abstract methods ... # Other attributes and methods. 1;
    package Widget::Snazzy; use Moose; with qw( Widget::Role ); sub get_widget_type { __PACKAGE__ } ... 1;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (3)
As of 2015-07-06 00:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (68 votes), past polls