Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Протокол метаобъектов 🆕 / Exercises / Добавьте метод
Решение: Добавьте метод
Вот один из возможных вариантов решения задачи.
Код
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.
Навигация по курсу
← Добавьте метод | Ввод и вывод →