NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
mixins versus traits (Score:2)
So you want to mixin your bomb class and your girlfriend class to your current class:
What happens when you want the Bomb::fuse method (because you can control the timing) but you also want the Girlfriend::explode method (because it's presumably non-lethal)? Now you have an ordering problem and you can't eliminate it. Of course, you could just use delegation, but that doesn't make life simple and that's part of what mixins are supposed to do. Traits allow you to solve this
But what if you already have a fuse or explode method defined in your code? mixins overwrite that. traits don't. Further, the traits won't even compile if there are conflicts unless you explicitly tell them how to resolve the conflicts.
Does another class want to know if you've implemented the Bomb methods? mixins don't really solve that (if you just use Girlfriend, it might have the false cognate problem, it might not). Traits, on the other hand, do solve that.
Need to conditionally bring those methods in at runtime or apply them to individual instances? Traits will do that, too.
Reply to This