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