Курс Raku / Об’єкти, введення-виведення та винятки / Класи та об’єкти
Підпрограми та методи
Тепер у вас є два способи запакувати частину поведінки: підпрограма й метод. Вони схожі на вигляд, але використовуються по-різному.
Підпрограма стоїть сама по собі. Ви викликаєте її за іменем і передаєте їй усе потрібне аргументами:
sub area-of($radius) {
π * $radius * $radius;
}
say area-of(2); # 12.566370614359172Метод належить класу і викликається для об’єкта через крапку. Він
може користуватися власними даними об’єкта через self та
методи доступу до атрибутів, тож ці дані передавати не треба:
class Circle {
has $.radius;
method area {
π * $.radius * $.radius;
}
}
say Circle.new(radius => 2).area; # 12.566370614359172Обидва обчислюють те саме число. Різниця в тому, звідки беруться дані: підпрограма отримує радіус аргументом, а метод читає його з об’єкта, для якого його викликано.
Як правило, беріть підпрограму для самостійної операції, яка просто перетворює свої аргументи, і метод — коли поведінка природно належить об’єктові й працює з його власним станом. Для специфічних для класу, але загальних підпрограм використовуйте методи класу.
Практика
Виконайте 1 тест за змістом цієї теми.
Вправи
У цьому розділі 2 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.