Curso de Raku / Objetos, entrada/salida y excepciones / Clases y objetos / El protocolo de metaobjetos 🆕 / Exercises / Añada un método
Solución: Añada un método
Aquí tienes una posible solución para la tarea.
Código
class Dog {
has $.name;
}
Dog.^add_method('speak', method { $.name ~ ' says woof' });
say Dog.new(name => 'Rex').speak;🦋 Puedes encontrar el código fuente en el archivo add-a-method.raku.
Salida
Rex says woofComentarios
.^add_methodadosa en tiempo de ejecución un método nuevo al metaobjeto de la clase, dado como unmethod { … }anónimo.El método añadido es un método real de la clase, así que dentro de él
$.namellega al atributonamedel objeto, igual que lo haría un método escrito en el cuerpo de la clase. Tras la llamada, todoDogresponde a.speak.