Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти
Методи класу
Більшість методів викликають для об’єкта — екземпляра класу. Але метод можна викликати й для самого класу, тобто для об’єкта типу. Такий метод часто називають методом класу. Він корисний для значень та операцій, що належать класу як цілому, а не одному конкретному об’єктові.
Метод класу визначають точнісінько так, як будь-який інший метод:
class Road {
method speed-limit { 120 }
}і викликають для імені класу замість екземпляра:
say Road.speed-limit; # 120Одним методом класу ви вже користувалися, не називаючи його:
new — це метод, який викликають для класу, щоб створити
новий об’єкт.
Метод класу не має доступу до атрибутів екземпляра — за ним немає конкретного об’єкта, — тож він працює лише з відомостями, однаковими для кожного об’єкта класу. Коли робота залежить від даних конкретного об’єкта, беріть звичайний метод, викликаний для екземпляра; коли ні, метод класу пасує природно.
Зверніть увагу: хоча методам класу екземпляр не потрібен, у них усе одно можна використати дані об’єкта, коли об’єкт таки є:
class Road {
has $.name;
method speed-limit { 120 }
method info {
"The maximum speed on $.name is " ~ self.speed-limit
}
}
my $R404 = Road.new(name => 'Road 404');
say $R404.info;Ця програма виводить очікуваний результат:
The maximum speed on Road 404 is 120Без створеного об’єкта класу виклик на кшталт
say Road.info спричинив би помилку.
Практика
Виконайте 1 тест за змістом цієї теми.
Вправи
У цьому розділі 2 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.