Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Lomas / Exercises / Dejojošs robots
Risinājums: Dejojošs robots
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā dancing-robot.raku.
Izvade
beep
beep
spinning aroundKomentāri
Atšķirībā no iepriekšējiem piemēriem
Dancingneaizstāj esošu metodi — tā atnes pavisam jaunu metodidance, par kuruRobotneko nezina.Robot.new but Dancingizpildes laikā iemaisa lomu vienā objektā, tāpēc$dancingprot ganspeak(no klases), gandance(no lomas). Vienkāršais$plainiemācījās vienīgispeak.Papildu spēja pieder šim vienam objektam, nevis klasei
Robot. Izsaukums$plain.dancebūtu kļūda, jo$plainlomu nekad nesaņēma.