Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Roles / Exercises / Una mascota con nombre y edad
Solución: Una mascota con nombre y edad
Aquí tienes una posible solución para la tarea.
Código
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;🦋 Puedes encontrar el código fuente en el archivo named-aged-pet.raku.
Salida
I am Rex
3 yearsComentarios
Petcompone dos roles a la vez, ganando tanto el métodolabelcomo el métodostatus.El método de cada rol usa un atributo (
nameoage) que aporta la clasePet.