Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Klassen und Objekte / Rollen / Exercises / Eine Box mit Größe
Lösung: Eine Box mit Größe
Hier ist eine mögliche Lösung der Aufgabe.
Code
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;🦋 Du findest den Quellcode in der Datei greetable.raku.
Ausgabe
size is 10
TrueKommentare
Die Rolle liefert die Methode
describe, und die Klasse bindet sie mitdoes Sizedein. Die Methode stützt sich aufself.size, das die KlasseBoxbeisteuert — Rolle und Klasse fügen sich zum vollständigen Objekt zusammen.Weil
Boxdie Rolle erfüllt, ist der Smartmatch$b ~~ SizedTrue: Ein Objekt wird als Träger jeder Rolle erkannt, die seine Klasse einbindet, was nützlich ist, um vor dem Aufruf einer Rollenmethode zu prüfen, was ein Objekt kann.