Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Roloj / Exercises / Skatolo kun grandeco
Solvo: Skatolo kun grandeco
Jen ebla solvo de la tasko.
Kodo
role Sized {
method describe {
'size is ' ~ self.size;
}
}
class Box does Sized {
has $.size;
}
my $b = Box.new(size => 10);
say $b.describe;
say $b ~~ Sized;🦋 Vi povas trovi la fontkodon en la dosiero greetable.raku.
Eligo
size is 10
TrueKomentoj
La rolo provizas la metodon
describe, kaj la klaso kunmetas ĝin perdoes Sized. La metodo dependas deself.size, kiun provizas la klasoBox— la rolo kaj la klaso kunefikas por formi la kompletan objekton.Ĉar
Boxfaras la rolon, la saĝa kongruado$b ~~ SizedestasTrue: objekto estas rekonata kiel havanta ĉiun rolon, kiun ĝia klaso kunmetas, kio estas utila por kontroli, kion objekto povas fari, antaŭ ol voki metodon de rolo.