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