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