Corso di Raku / Oggetti, input/output ed eccezioni / Classi e oggetti / Il protocollo dei metaoggetti 🆕 / Exercises / Aggiungete un metodo
Soluzione: Aggiungete un metodo
Ecco una possibile soluzione del compito.
Codice
class Dog {
has $.name;
}
Dog.^add_method('speak', method { $.name ~ ' says woof' });
say Dog.new(name => 'Rex').speak;🦋 Trova il programma nel file add-a-method.raku.
Output
Rex says woofCommenti
.^add_methodattacca a runtime un nuovo metodo al metaoggetto della classe, dato comemethod { … }anonimo.Il metodo aggiunto è un metodo vero della classe, quindi al suo interno
$.nameraggiunge l’attributonamedell’oggetto, esattamente come farebbe un metodo scritto nel corpo della classe. Dopo la chiamata, ogniDogrisponde a.speak.