develooper Front page | perl.perl6.language | Postings from January 2004

Re: Roles and Mix-ins?

Thread Previous | Thread Next
From:
Luke Palmer
Date:
January 6, 2004 01:51
Subject:
Re: Roles and Mix-ins?
Message ID:
20040106095127.GA17281@babylonia.flatirons.org
David Storrs writes:
> 
> On Sat, Dec 13, 2003 at 11:12:31AM -0800, Larry Wall wrote:
> > On Sat, Dec 13, 2003 at 04:57:17AM -0700, Luke Palmer wrote:
> 
> > : For one, one role's methods don't silently override another's.  Instead,
> > : you get, er, role conflict and you have to disambiguate yourself.  
> 
> How do you disambiguate?

Let's see...

    role Dog {
        method bark() { print "Ruff!" }
    }
    role Tree {
        method bark() { print "Rough!" }
    }
    class Trog 
      does Dog does Tree {
        method bark() { .Dog::bark() }
      }
    }

Perhaps something like that.  In any case, you do it by putting the
offending method directly in the aggregating class.

> After reading this several times, I _think_ I understand.  Let me
> check: imagine that the original class is a text buffer going from
> 0-99.  We have two roles (A and B), each of length 100.  Objects of
> various types can then see different segments of the buffer (i.e.,
> different methods/properties/whatever), as follows:
> 
> 	Type		Can see 
> 	----		-------
> 	Class		1-100		
> 	A		101-199
> 	B		200-299
> 	Class+A		1-100,101-199
> 	Class+B		1-100,200-299
> 	Class+A+B	1-100,101-199,200-299
> 
> Is that right?

Umm... I'm not sure that's what I'd use roles for.  And I'm not sure how
roles with associated data are supposed to work yet.  But I think you
have the general idea.

Luke

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About