Cursus Raku / Objecten, in- en uitvoer en excepties / Klassen en objecten / Het meta-objectprotocol 🆕 / Exercises / Voeg een methode toe
Oplossing: Voeg een methode toe
Hier is een mogelijke oplossing voor de taak.
Code
class Dog {
has $.name;
}
Dog.^add_method('speak', method { $.name ~ ' says woof' });
say Dog.new(name => 'Rex').speak;🦋 Je kunt de broncode vinden in het bestand add-a-method.raku.
Uitvoer
Rex says woofOpmerkingen
.^add_methodhangt tijdens het draaien een nieuwe methode aan het metaobject van de klasse, gegeven als een anoniememethod { … }.De toegevoegde methode is een echte methode van de klasse, dus binnen die methode bereikt
$.namehet attribuutnamevan het object, precies zoals een in de klassebody geschreven methode zou doen. Na de aanroep reageert elkeDogop.speak.