Kurso de Raku / Objektoj, en- kaj eligo kaj escepto / Klasoj kaj objektoj / Roloj / Exercises / Dancanta roboto
Solvo: Dancanta roboto
Jen ebla solvo de la tasko.
Kodo
role Dancing {
method dance {
'spinning around';
}
}
class Robot {
method speak {
'beep';
}
}
my $plain = Robot.new;
my $dancing = Robot.new but Dancing;
say $plain.speak;
say $dancing.speak;
say $dancing.dance;🦋 Vi povas trovi la fontkodon en la dosiero dancing-robot.raku.
Eligo
beep
beep
spinning aroundKomentoj
Malsame ol la pli fruaj ekzemploj,
Dancingne anstataŭigas ekzistantan metodon — ĝi alportas tute novan metodondance, pri kiuRobotscias nenion.Robot.new but Dancingenmiksas la rolon en unu solan objekton je rultempo, do$dancingpovas kajspeak(el la klaso) kajdance(el la rolo). La simpla$plainiam ajn lernis nurspeak.La kroma kapablo apartenas al tiu unu objekto, ne al la klaso
Robot. Voki$plain.danceestus eraro, ĉar$plainneniam ricevis la rolon.