Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Re^3: MooseX::Types::TypeDecorator error

by phaylon (Curate)
on Jul 16, 2009 at 22:05 UTC ( #780858=note: print w/ replies, xml ) Need Help??

in reply to Re^2: MooseX::Types::TypeDecorator error
in thread MooseX::Types::TypeDecorator error

You should put your MooseX-Types library into a separate file. The method signatures are parsed at compile time, and if they are defined in the same package, they are not declared yet.

Ordinary morality is for ordinary people. -- Aleister Crowley

Comment on Re^3: MooseX::Types::TypeDecorator error
Re^4: MooseX::Types::TypeDecorator error
by Anonymous Monk on Jul 17, 2009 at 06:29 UTC
    That is why BEGIN{} blocks were invented :)
    BEGIN { use MooseX::Declare; class Foo { use feature qw(say); use Data::Dumper; use MooseX::MultiMethods; use MooseX::Types -declare => [qw(Bar MyStr MyNum)]; use MooseX::Types::Moose qw(Str Num); use MooseX::Types::Structured qw(Dict); BEGIN { subtype MyStr, as Str; subtype MyNum, as Num; subtype Bar, as Dict[ string => MyStr, number => MyNum, ], message { 'Invalid Foo struct' }; }; multi method baz(Bar $barrr) { say'Bar'; say Dumper $barrr } multi method baz(Str $string) { say 'Str'; say Dumper $string; } } } no Moose; no MooseX::Declare; 1; package main; my $foo = Foo->new; $foo->baz( { string => 'hello', number => 1.00, } ); $foo->baz( 'hello world' )
Re^4: MooseX::Types::TypeDecorator error
by KSURi (Monk) on Jul 17, 2009 at 09:09 UTC
    Yes, as some anonymous monk said above, that's why I put types declaration into BEGIN block (inlined for brevity). In real code these declarations are in a separate file.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (11)
As of 2014-07-22 07:41 GMT
Find Nodes?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:

    Results (106 votes), past polls