Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re^4: Moose "unions" and inheritance

by PetaMem (Priest)
on Nov 30, 2012 at 13:49 UTC ( #1006477=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Moose "unions" and inheritance
in thread Moose "unions" and inheritance

Moose type constraints are not strings, they are instances of Moose::Meta::TypeConstraint.
Sure, I assumed they have semantics beyond 'being a String'. I just meant from the syntactic perspective, Moose::Manual::Types pretty much makes it look like the types are strings. At least
... isa => Str | ArrayRef, ...

doesn't work without MooseX::Types (Bareword "Str" not allowed while "strict subs"...)

Anyway, I tried to make this inherited union constraints "do what I mean" for multiple inheritance and came up with
package ValAtom; use strict; use warnings; use 5.10.1; use Moose; use MooseX::Types::Moose -all; extends 'KeyAtom', 'JustTesting'; has '+data' => ( isa => __PACKAGE__->_existing_constraint('data') . ' | ArrayRe +f | HashRef', ); sub _existing_constraint { my ($class, $attr) = @_; return join ' | ', map { $_->meta->find_attribute_by_name($attr)->type_constraint } $class->meta->superclasses; } 1;
Back to string again - obviously - as I couldn't figure out how to do it otherwise. But this seems to work.

Bye
 PetaMem
    All Perl:   MT, NLP, NLU


Comment on Re^4: Moose "unions" and inheritance
Select or Download Code

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (17)
As of 2015-07-07 15:43 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 (90 votes), past polls