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

  1. Потроєння як підпрограма
  2. Потроєння як метод

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

Тест — Методи класу   |   Потроєння як підпрограма