Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Lomas / Exercises / Kaste ar izmēru
Risinājums: Kaste ar izmēru
Šeit ir iespējams risinājums uzdevumam.
Kods
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;🦋 Atrodiet programmu failā greetable.raku.
Izvade
size is 10
TrueKomentāri
Loma nodrošina metodi
describe, un klase to komponē ardoes Sized. Metode paļaujas uzself.size, ko nodrošina klaseBox— loma un klase saderas kopā, veidojot pilnu objektu.Tā kā
Boxdara lomu, gudrā sakritība$b ~~ SizedirTrue: objekts tiek atpazīts kā tāds, kam ir katra loma, ko tā klase komponē, un tas noder, lai pārbaudītu, ko objekts prot, pirms izsaukt lomas metodi.