X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FRole-Tiny.git;a=blobdiff_plain;f=lib%2FMoo.pm;h=19f53275c3d97f16d1569a3463618dd29c11b3b5;hp=aea43e180c454f1f693dcd7cf9393ba4c3c9b307;hb=5902c1fcd2ed52f78c6710638be7798fc3c05c8d;hpb=55d91f641bc43e5f929e35dc653a3aeea2497db8 diff --git a/lib/Moo.pm b/lib/Moo.pm index aea43e1..19f5327 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. @@ -478,6 +495,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)