Курс языка программирования Raku / Объекты, ввод-вывод и исключения / Классы и объекты / Протокол метаобъектов 🆕 / Метаметоды
Тест — Протокол метаобъектов
Что выведет следующая программа?
class Point {
has $.x;
has $.y;
}
say Point.^attributes.elems;| 0 | 1 |
| 1 | 2 |
| 0 | (Point) |
| 0 | ошибка |
.^attributes — это метаметод, вызываемый через
.^ у метаобъекта типа; он перечисляет атрибуты, объявленные
типом, а .elems их считает. Point объявляет
два атрибута, $.x и $.y, поэтому печатается
2.