[Pdx-pm] Poll: traits

Eric Wilhelm scratchcomputing at gmail.com
Sat Nov 19 12:12:27 PST 2005

# from Ovid
# on Saturday 19 November 2005 11:17 am:

>  package FamilyMember;
>  use Class::Trait
>    TSpouse => { exclude => ['fuse'] },
>    TBomb   => { exclude => ['explode'] };
>And now FamilyMember->can('explode') (from TSpouse) and
>FamilyMember->can('fuse') (from TBomb).

So, in this case, it's the same as

  use TSpouse qw(explode);
  use TBomb qw(fuse);


Of course, that assumes that these methods are at least in @EXPORT_OK, 
and it looks like you've done something handier than that with 
Class::Trait (besides, most people wouldn't think to export method 
names, would they?)

Now I can change my answer to "of course I use them", but iirc, I've 
only ever done it with the (not so meticulous) do("traitfile") :-)

So, I can see some benefits here, particularly in the collision 
detection, exclusion or inclusion, etc.  I just wish you had presented 
it that way instead of with a link to a 143 page paper, where most of 
the discussion centers around the fact that he's dealing with a 
language where pragmatic code reuse is hindered by an overly formalized 
OO system.

hobgoblin n 1: (folklore) a small grotesque supernatural creature that
          makes trouble for human beings

More information about the Pdx-pm-list mailing list