Could someone please tell me what is wrong with the following?

role win_text {
 has $.win_mytxt1 is rw;
 has $.win_mytxt2 is rw;
};

role mywindow {
 has $.border is rw;
 has $.colour is rw;
 does win_text;
};

my $w = new mywindow;

$w.border = 2;
$w.colour = 'red';
say $w.border;
say $w.colour;

$w.win_mytxt1 = 'quick red fox';
$w.win_mytxt2 = ' jumped over the lazy dog';
say $w.win_mytxt1 ~ $.win_mytxt2;

Running in a terminal yields:

$ pugs ./test.p6
2
red
*** No compatible subroutine found: "&win_mytxt1"
   at ./test.p6 line 19, column 1-32
$

Hence defining attributes in a role and accessing them works as defined in Synopsis 12. (If I understand the synopsis correctly, when I write 'my $w = new mywindow' I am autogenerating a class from a role.) Otherwise I would not get the '2' and 'red' printed out.

But I could not find any mention that an attribute in a role called by a role would have to be accessed differently.

Regards,
Richard

Reply via email to