我正试图重载>gt;像这样的操作员:
class A {}
multi sub infix:«>>»(A:D $a, Str() $b) is assoc<non> { dd $a; dd $b }
my $x = A.new;
$x >> 'output.txt';
但我在第5行收到一个编译错误,上面写着:
Unsupported use of >> to do right shift. In Raku please use: +> or ~>.
我错过了什么?
这是一个Rakudo的编译器(有点(过于聪明的例子。因为Raku中有不同类型的移位操作,而且都不使用双箭头,所以Rakudo使用的语法设置了>>
,以触发对习惯其他语言的人的警报。我想当时没有人认为有人会制作>>
运算符,这是有意义的,因为>>
或多或少暗示着可能存在<<
,如果它用作引用环和元运算符,它可能会造成各种破坏。
你可以在这里看到代码和语法:https://github.com/rakudo/rakudo/blob/9d6d8dd7a72aed698e30b6fe4b8eea62642c62c6/src/Perl6/Grammar.nqp#L4104