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

Обекти на типа и екземпляри

Когато напишете име на клас като Dog, вие се позовавате на обекта на типа на класа. Обектът на типа представя самия тип, а не някакъв конкретен обект от този тип. Екземплярът, създаден с new, е действителен обект.

Raku различава двете. Методът defined връща False за обект на типа и True за екземпляр:

class Dog {
}

say Dog.defined;     # False
say Dog.new.defined; # True

Обектът на типа се смята за недефиниран, защото не съдържа конкретни данни — той е само описанието на един тип. Екземплярът е дефиниран: той е истински обект.

И двата съобщават един и същ тип чрез WHAT, с който се запознахте в раздела за контейнерите:

class Dog {
}

say Dog.WHAT;     # (Dog)
say Dog.new.WHAT; # (Dog)

Скобите около (Dog) са начинът на Raku да покаже тип. Така Dog и Dog.new споделят типа Dog; разликата е, че единият е самият тип, а другият — обект от този тип.

Практика

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

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

Класове   |   Тест — Класове


💪 Или преминете направо към упражненията в този раздел.