Курс по 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   |   Оператор за средна стойност