Курс языка программирования 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 тест по содержанию этой темы.

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

Классы   |   Тест — Классы


💪 Или перейдите сразу к упражнениям этого раздела.