On Fri, 2004-04-30 at 17:58, Austin Hastings wrote: > class Session > { > does ListOfMessages > ( > attribute_base => 'messages', > method_base => 'messages', > display_color => 'black' > ); > > does ListOfMessages > ( > attribute_base => 'errors', > method_base => 'errors', > display_color => 'red' > ); > > ... > }
> Can I just do: > > role ListOfMessages($attribute_base, $method_base, $display_color) {...} I think you want a combination of re-dispatch and delegation: class Session { role EventHandler { # The one and only place you define the behavior method clear() {...} method add() {...} method have() {...} method get() {...} } class ErrorHanlder { does EventHandler; # Probably should do some funky re-dispatch thing method clear_errors() { .clear() } method add_errors() { .add() } method have_errors() { .have() } method get_errors() { .get() } } class MessageHanlder { does EventHandler; method clear_messages() { .clear() } method add_messages() { .add() } method have_messages() { .have() } method get_messages() { .get() } } has ErrorHanlder $:errors handles <<clear_errors add_errors have_errors get_errors>>; has MessageHandler $:messages handles <<clear_messages add_messages have_messages get_messages>>; } That should do what you want. -- Aaron Sherman <[EMAIL PROTECTED]> Senior Systems Engineer and Toolsmith "It's the sound of a satellite saying, 'get me down!'" -Shriekback