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 woof

Opmerkingen

  1. .^add_method hangt tijdens het draaien een nieuwe methode aan het metaobject van de klasse, gegeven als een anonieme method { … }.

  2. De toegevoegde methode is een echte methode van de klasse, dus binnen die methode bereikt $.name het attribuut name van het object, precies zoals een in de klassebody geschreven methode zou doen. Na de aanroep reageert elke Dog op .speak.

Cursusnavigatie

Voeg een methode toe   |   Invoer en uitvoer