Курс языка программирования 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.

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

Питомец с именем и возрастом   |   Танцующий робот