Курс по Raku / Обекти, вход-изход и изключения / Класове и обекти

Интроспекция на обекти

В раздела за контейнерите използвахте .^name, за да попитате стойността за нейния тип. Същите метаизвиквания с .^ ви позволяват да разгледате клас и обектите му: имената им, атрибутите им и мястото им в йерархията.

Методът .^name връща името на класа:

class Dog {
    has Str $.name;
    method bark { 'Woof' }
}

say Dog.^name; # Dog

Метаметодът .^attributes изброява атрибутите на класа. Всеки се показва с типа си и с вътрешното си частно име (формата $!, с която се запознахте при частните атрибути):

say Dog.^attributes; # (Str $!name)

Интроспекцията е полезна за инструменти, които работят с обекти общо — например за да отпечатат всеки атрибут на обект, без да знаят класа му предварително. Следващата тема разглежда как да видите веригата на наследяване на класа.

Още в този раздел

Практика

Направете 1 тест върху съдържанието на този раздел.

Упражнения

Този раздел съдържа 2 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.

  1. Опишете клас
  2. Пребройте атрибутите

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

Решение: Танцуващ робот   |   Веригата на наследяване