Создание нового оператора
Я пытаюсь сделать логический оператор отрицания.
¬ True;
multi sub prefix:<¬> ($n) {
return not $n;
}
Когда я запускаю вышеупомянутую программу, она возвращает эту ошибку:
$ perl6 test.pl6 ===SORRY!=== Error while compiling /home/devXYZ/test.pl6 Bogus statement at /home/devXYZ/test.pl6:1 ------> <BOL>⏏¬ True; expecting any of: prefix term
Кто-нибудь знает, в чем может быть причина?
1 ответ
Решение
Объявление нового оператора должно появиться до его использования. Изменение программы на:
multi sub prefix:<¬> ($n) {
return not $n;
}
say ¬ True;
Делает это работает нормально.
Perl 6 имеет строгие правила однопроходного разбора. Следовательно, порядок имеет значение для всего, что влияет на анализируемый язык, например, путем введения типа или нового оператора.