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