Курс языка программирования 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 упражнения. Прежде чем приступать к практике, изучите все темы раздела.