gpt4 book ai didi

overloading - 无法在Raku中重载>>运算符

转载 作者:行者123 更新时间:2023-12-03 16:17:45 24 4
gpt4 key购买 nike

我试图像这样重载>>运算符:

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

关于overloading - 无法在Raku中重载>>运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63460743/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com