From: Tomas Doran <bobtfish@bobtfish.net> Date: Thu, 28 Aug 2008 14:56:38 +0000 (+0000) Subject: Add an explanation about Roles/Traits and the difference between them (or lack thereo... X-Git-Tag: 0.55_02~17 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=a8de15f8b34818dd1923669609a3cbaed04cab02;p=gitmo%2FMoose.git Add an explanation about Roles/Traits and the difference between them (or lack thereof). Also drive-by speeling fixation --- diff --git a/lib/Moose/Cookbook/FAQ.pod b/lib/Moose/Cookbook/FAQ.pod index 193d6aa..ee14c71 100644 --- a/lib/Moose/Cookbook/FAQ.pod +++ b/lib/Moose/Cookbook/FAQ.pod @@ -85,7 +85,7 @@ or any other format To change the handling of individual parameters, there are I<coercions> (See the L<Moose::Cookbook::Basics::Recipe5> for a complete example and -explaination of coercions). With coercions it is possible to morph +explanation of coercions). With coercions it is possible to morph argument values into the correct expected types. This approach is the most flexible and robust, but does have a slightly higher learning curve. @@ -172,7 +172,7 @@ L<Moose::Policy::FollowPBP>. This will allow you to write: is => 'rw', ); -And have Moose create seperate C<get_bar> and C<set_bar> methods +And have Moose create separate C<get_bar> and C<set_bar> methods instead of a single C<bar> method. NOTE: This B<cannot> be set globally in Moose, as that would break @@ -282,6 +282,24 @@ release. See L<Moose::Cookbook::WTF> and specifically the B<How come BUILD is not called for my composed roles?> question in the B<Roles> section. +=head3 What are Traits, and how are they different to Roles? + +In Moose, a trait is almost exactly the same thing as a role, except that +traits typically register themselves, and thus can be referred to by a short name. + +The word I<Role> is typically used to indicate a class building block, which +is composed into a class at class composition time, whereas I<Trait> is used to +indicate functionality which is composed into an instance of a class at runtime +to add or modify the behavior of B<that instance>. + +But this is all just convention, so don't take it too seriously - nobody +is going to yell at you if you use them interchangeably, or use one instead +of the other. + +Outside the context of Moose, traits and roles generally mean exactly the +same thing. The original paper called them Traits, however Perl 6 will call +them Roles. + =head1 AUTHOR Stevan Little E<lt>stevan@iinteractive.comE<gt>