X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoo.pm;h=d769b72ce02af6c970930ae11e2fe7a2e263fcfd;hb=1fb2de927a866d9467859a16b89d5360da2c46c4;hp=aea43e180c454f1f693dcd7cf9393ba4c3c9b307;hpb=faa9ce11cefee1e6f7800ec1dbe561717c162161;p=gitmo%2FRole-Tiny.git diff --git a/lib/Moo.pm b/lib/Moo.pm index aea43e1..d769b72 100644 --- a/lib/Moo.pm +++ b/lib/Moo.pm @@ -430,11 +430,28 @@ aware can take advantage of this. =head1 INCOMPATIBILITIES WITH MOOSE You can only compose one role at a time. If your application is large or -complex enough to warrant complex composition, you wanted L. +complex enough to warrant complex composition, you wanted L. Note that +this does not mean you can only compose one role per class - -There is no complex type system. C is verified with a coderef, if you + with 'FirstRole'; + with 'SecondRole'; + +is absolutely fine, there's just currently no equivalent of Moose's + + with 'FirstRole', 'SecondRole'; + +which composes the two roles together, and then applies them. + +There is no built in type system. C is verified with a coderef, if you need complex types, just make a library of coderefs, or better yet, functions -that return quoted subs. +that return quoted subs. L provides a similar API +to L so that you can write + + has days_to_live => (is => 'ro', isa => Int); + +and have it work with both; it is hoped that providing only subrefs as an +API will encourage the use of other type systems as well, since it's +probably the weakest part of Moose design-wise. C is not supported in core since the author considers it to be a bad idea but may be supported by an extension in future. @@ -447,6 +464,10 @@ No support for C, C, C, or C - override can be handled by around albeit with a little more typing, and the author considers augment to be a bad idea. +The C method is not provided by default. The author suggests loading +L into C (via C for example) and +using C<$obj-E$::Dwarn()> instead. + L only supports coderefs, because doing otherwise is usually a mistake anyway. @@ -478,6 +499,23 @@ The nearest L invocation would be: use warnings FATAL => "all"; use MooseX::AttributeShortcuts; +or, if you're inheriting from a non-Moose class, + + package MyClass; + + use Moose; + use MooseX::NonMoose; + use warnings FATAL => "all"; + use MooseX::AttributeShortcuts; + +Finally, Moose requires you to call + + __PACKAGE__->meta->make_immutable; + +at the end of your class to get an inlined (i.e. not horribly slow) +constructor. Moo does it automatically the first time ->new is called +on your class. + =head1 AUTHOR mst - Matt S. Trout (cpan:MSTROUT) @@ -500,6 +538,8 @@ ajgb - Alex J. G. Burzyński (cpan:AJGB) doy - Jesse Luehrs (cpan:DOY) +perigrin - Chris Prather (cpan:PERIGRIN) + =head1 COPYRIGHT Copyright (c) 2010-2011 the Moo L and L