Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти / Роли / Exercises / Домашен любимец с име и възраст

Решение: Домашен любимец с име и възраст

Ето едно възможно решение на задачата.

Код

role Named {
    method label {
        'I am ' ~ self.name;
    }
}

role Aged {
    method status {
        self.age ~ ' years';
    }
}

class Pet does Named does Aged {
    has $.name;
    has $.age;
}

my $p = Pet.new(name => 'Rex', age => 3);
say $p.label;
say $p.status;

🦋 Намерете програмата във файла named-aged-pet.raku.

Изход

I am Rex
3 years

Коментари

  1. Pet компонира две роли наведнъж и получава и метода label, и метода status.

  2. Методът на всяка роля използва атрибут (name или age), който класът Pet предоставя.

Навигация в курса

Домашен любимец с име и възраст   |   Танцуващ робот