Курс Raku / Розширені / Оператори

Оператори, визначені користувачем

Оператори в Raku насправді є просто підпрограмами з особливими іменами. Це означає, що ви можете визначати власні, користуючись назвами категорій, з якими познайомилися на сторінці Типи операторів Raku: prefix, infix, postfix тощо.

Щоб оголосити оператор, напишіть sub, іменем якого є категорія, двокрапка й символ оператора в кутових дужках. Ось новий інфіксний оператор під назвою plus:

sub infix:<plus>($a, $b) {
    $a + $b
}

say 3 plus 4; # 7

Щойно його визначено, plus використовують між двома операндами — точно як будь-який вбудований інфіксний оператор.

Постфіксний оператор іде за своїм операндом. Класичний приклад — факторіал; ось він як постфіксний оператор !, побудований на метаоператорі згортки, з яким ви познайомилися раніше:

sub postfix:<!>(Int $n) {
    [*] 1..$n
}

say 5!; # 120

Ви не обмежені літерами та розділовими знаками ASCII: символом оператора може бути будь-який знак. Цей префіксний оператор використовує знак параграфа, щоб подвоїти число:

sub prefix:<§>($x) {
    $x * 2
}

say §5; # 10

Визначення операторів — потужний інструмент, тож користуйтеся ним зі смаком: вдало дібраний оператор може змусити код читатися як предметна область, а незрозумілий лише спантеличить наступного читача.

Практика

Виконайте 1 тест за змістом цієї теми.

Вправи

У цьому розділі 3 вправи. Перш ніж братися до практики, вивчіть усі теми розділу.

  1. Оператор середнього
  2. Оператор відсотка
  3. Оператор піднесення до квадрату

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

Розв’язання: Побудувати URL   |   Оператор середнього