On Fri, 2005-11-04 at 13:15 -0500, Austin Frank wrote:
> If roles are interfaces, do we want any class that provides an interface
> consistent with a role to implicitly do the role? That is, if a class
> fulfills all of the interface requirements of a role without actually
> saying it does the role, does it do the role anyway?
No.
role Dog
{
method bark { ... }
}
class Tree
{
has $.bark;
}
A role is a named collection of behavior and state, not just a list of
method and property names. The context is highly important. It's the
difference between homonyms and allomorphs.
-- c