Raku kurss / Objekti, ievade/izvade un izņēmumi / Klases un objekti / Metaobjektu protokols 🆕 / Exercises / Pievienojiet metodi

Risinājums: Pievienojiet metodi

Šeit ir iespējams risinājums uzdevumam.

Kods

class Dog {
    has $.name;
}

Dog.^add_method('speak', method { $.name ~ ' says woof' });

say Dog.new(name => 'Rex').speak;

🦋 Atrodiet programmu failā add-a-method.raku.

Izvade

Rex says woof

Komentāri

  1. .^add_method izpildes laikā piesaista klases metaobjektam jaunu metodi, kas dota kā anonīma method { … }.

  2. Pievienotā metode ir īsta klases metode, tāpēc tās iekšienē $.name sasniedz objekta atribūtu name gluži tāpat, kā to darītu klases ķermenī uzrakstīta metode. Pēc izsaukuma katrs Dog atsaucas uz .speak.

Kursa navigācija

Pievienojiet metodi   |   Ievade un izvade