Курс 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 тест за змістом цієї теми.

Навігація курсом

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


💪 Або перейдіть одразу до вправ цього розділу.