Курс языка программирования 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Комментарии
Petвключает сразу две роли, получая и методlabel, и методstatus.Метод каждой роли использует атрибут (
nameилиage), который предоставляет классPet.