Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Протокол метаобъектов 🆕 / Метаметоды

Тест — Протокол метаобъектов

Что выведет следующая программа?

class Point {
    has $.x;
    has $.y;
}

say Point.^attributes.elems;
01
12
0(Point)
0ошибка

.^attributes — это метаметод, вызываемый через .^ у метаобъекта типа; он перечисляет атрибуты, объявленные типом, а .elems их считает. Point объявляет два атрибута, $.x и $.y, поэтому печатается 2.

Навигация по курсу

Метаметоды   |   Добавление методов во время выполнения