Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти / Протокол метаоб’єктів 🆕 / Вправи / Додайте метод
Розв’язання: Додайте метод
Ось один із можливих варіантів розв’язання задачі.
Код
class Dog {
has $.name;
}
Dog.^add_method('speak', method { $.name ~ ' says woof' });
say Dog.new(name => 'Rex').speak;🦋 Вихідний код можна знайти у файлі add-a-method.raku.
Вивід
Rex says woofКоментарі
.^add_methodприєднує новий метод до метаоб’єкта класу під час виконання, задаючи його як анонімнийmethod { … }.Доданий метод є справжнім методом класу, тож усередині нього
$.nameдістає атрибутnameоб’єкта — точнісінько як метод, написаний у тілі класу. Після цього виклику коженDogвідгукується на.speak.