Thanks again for the answers, everyone. I was able to do what I wanted by using Moose::Util::apply_all_roles to add separate roles to both my main class its metaclass. Sweet.
Mike On Tue, May 11, 2010 at 9:38 AM, Stevan Little <[email protected]> wrote: > > On May 10, 2010, at 11:17 PM, Christopher Brown wrote: >> >> Mike, >> >> Let me take a stab as I understand it. Hopefully, some of the other >> Moosers >> will correct me if I am wrong: >> >>> Are traits and roles the same, here? >> >> Yes. Metaclass traits are roles applied to the metaclass. It IS that >> simple. > > Yup, Christopher is correct, that is all they really are. > > I further generalize it to say that "traits" are roles applied to an > instance, and most often that instance is a meta-object. > > The reason for the different name comes from the Perl 6 roots of Moose. In > Perl 6 they had "traits" which looked something like this: > > my $foo is Bedazzled; > > where "Bedazzled" is a trait that is applied to $foo. The Perl 6 specs being > very hand-wavey at times, didn't define exactly what a "trait" was (I think > they have now locked it down, but I am going back 4 or so years here). In > my meta-fueled imagination I always saw traits as being roles applied to the > underlying meta-objects. In the above case the Bedazzled role would be > applied to the underlying Scalar container object in order to alter it's > behavior is some way. > > So really, traits are just roles that are used in a particular way, nothing > special beyond that. > > - Stevan > > > > >
