I had a similar problem. I receive a minimal abstract object and changed it into a specialized one to make life easier. What I did was creating a new class "Labrador" with the superclass "Dog" and a role "LabradorMethodsAndAtributes". Well, in my case it wasn't dogs.
Shortened, adjusted, unrunable code:
my $class_name = "Felidae::Tiger";
# Does the class already exist?
return $class_name
if is_class_loaded($class_name);
# No, create it
my $superclass = "Felidae";
my $role_name = "Felidae::Role::Tiger";
# create the Role
my $role = Moose::Meta::Role->create($role_name);
# A leopard does not have stripes but spots
$role->add_attribute( "stripecount",
( is => 'rw',
isa => 'Int',
... # builder, lazy etc
) );
my $my_class = Moose::Meta::Class->create(
$class_name,
superclasses => [$superclass],
roles => [$role_name],
);
my $garfield = $class_name->new($felidae_obj);
Now you have an object which isa "Felidae" and a "Tiger" and does "stripecount".
And it came to pass that in time the Great God Om spake unto Brutha, the Chosen One: "Psst!"
(Terry Pratchett, Small Gods)
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|