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
True

Komentāri

  1. Loma nodrošina metodi describe, un klase to komponē ar does Sized. Metode paļaujas uz self.size, ko nodrošina klase Box — loma un klase saderas kopā, veidojot pilnu objektu.

  2. Tā kā Box dara lomu, gudrā sakritība $b ~~ Sized ir True: 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.

Kursa navigācija

Kaste ar izmēru   |   Mājdzīvnieks ar vārdu un vecumu