Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

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
Replies are listed 'Best First'.
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.
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' )

Log In?
Username:
Password:

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

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