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 years

Comentarios

  1. Pet compone dos roles a la vez, ganando tanto el método label como el método status.

  2. El método de cada rol usa un atributo (name o age) que aporta la clase Pet.

Una mascota con nombre y edad   |   Un robot que baila