Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW

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?

What's my password?
Create A New User
Domain Nodelet?
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 musing on the Monastery: (3)
As of 2023-02-05 13:28 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (31 votes). Check out past polls.