Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / Roles

Componer varios roles

Una clase puede asumir más de un rol. Basta con enumerarlos, cada uno con su propio does:

role Walk {
    method move { 'walking' }
}

role Swim {
    method dive { 'diving' }
}

class Duck does Walk does Swim {
}

La clase Duck tiene ahora tanto el método move de Walk como el método dive de Swim:

say Duck.new.move; # walking
say Duck.new.dive; # diving

Combinar roles así se llama composición. Te permite ensamblar una clase a partir de varias piezas de comportamiento independientes, lo que suele ser más flexible que construir una única cadena de herencia: una clase puede mezclar exactamente las capacidades que necesita, y nada más.

Roles   |   Añadir un rol a un objeto


💪 O ve directamente a los ejercicios de esta sección.