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