Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти
Інтроспекція об’єктів
У розділі про контейнери ви
користувалися .^name, щоб запитати значення про його тип.
Ті самі метавиклики через .^ дозволяють досліджувати клас і
його об’єкти: їхні імена, атрибути та місце в ієрархії.
Метаметод .^name повертає ім’я класу:
class Dog {
has Str $.name;
method bark { 'Woof' }
}
say Dog.^name; # DogМетаметод .^attributes перелічує атрибути класу. Кожен
показано з його типом і внутрішнім приватним іменем (форма
$!, з якою ви познайомилися в темі про приватні атрибути):
say Dog.^attributes; # (Str $!name)Інтроспекція корисна для інструментів, що працюють з об’єктами узагальнено, — наприклад, щоб вивести кожен атрибут об’єкта, не знаючи наперед його класу. Наступна тема розглядає, як побачити ланцюжок успадкування класу.
Ще в цьому розділі
Практика
Виконайте 1 тест за змістом цього розділу.
Вправи
У цьому розділі 2 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.