创建新的运营商

use*_*164 5 new-operator perl6 prefix-operator

我正在努力使¬成为一个逻辑否定运算符.

¬ True;

multi sub prefix:<¬> ($n) {
        return not $n;
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的程序时,它返回此错误:

$ 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
Run Code Online (Sandbox Code Playgroud)

有谁知道原因可能是什么?

Jon*_*ton 7

新运算符的声明必须在使用之前出现.将程序更改为:

multi sub prefix:<¬> ($n) {
    return not $n;
}
say ¬ True;
Run Code Online (Sandbox Code Playgroud)

使它工作正常.

Perl 6具有严格的一次通过解析规则.因此,顺序与影响被解析语言的任何事物有关 - 例如通过引入类型或新运算符.