Курс языка программирования 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   |   Оператор среднего значения