Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Rollen / Exercises / Een doos met een maat
Oplossing: Een doos met een maat
Hier is een mogelijke oplossing voor de taak.
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;🦋 Je kunt de broncode vinden in het bestand greetable.raku.
Uitvoer
size is 10
TrueOpmerkingen
De rol levert de methode
describe, en de klasse stelt hem samen metdoes Sized. De methode steunt opself.size, dat door de klasseBoxgeleverd wordt — de rol en de klasse passen in elkaar tot het volledige object.Omdat
Boxde rol doet, is de smartmatch$b ~~ SizedTrue: een object wordt herkend als hebbende elke rol die zijn klasse samenstelt, wat handig is om te controleren wat een object kan voordat je een methode van een rol aanroept.
Cursusnavigatie
← Een doos met een maat | Een huisdier met naam en leeftijd →