Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Rollen / Exercises / Ein tanzender Roboter
Lösung: Ein tanzender Roboter
Hier ist eine mögliche Lösung der Aufgabe.
Code
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;🦋 Du findest den Quellcode in der Datei dancing-robot.raku.
Ausgabe
beep
beep
spinning aroundKommentare
Anders als in den früheren Beispielen ersetzt
Dancingkeine bestehende Methode — es bringt eine ganz neue Methodedancemit, von derRobotnichts weiß.Robot.new but Dancingmischt die Rolle zur Laufzeit in ein einzelnes Objekt,$dancingkann also sowohlspeak(aus der Klasse) als auchdance(aus der Rolle). Der schlichte$plainhat nurspeakgelernt.Die zusätzliche Fähigkeit gehört zu diesem einen Objekt, nicht zur Klasse
Robot.$plain.danceaufzurufen wäre ein Fehler, weil$plaindie Rolle nie erhalten hat.