小编gmo*_*kin的帖子

无法重载我的课程的逻辑运算符(或)

我试图重载or自定义类的逻辑运算符,但它似乎不起作用。这是我的工作:

class A { has $.a }
multi sub infix:<or> (A $a, A $b) {
    "works!({$a.a}, {$b.a})"
}
say A.new(:1a) or A.new(:2a); 
Run Code Online (Sandbox Code Playgroud)

我期望将其works!(1, 2)作为输出获取,但我会获取A.new(a => 1),这是标准or运算符的结果。

其他运算符(and和除外xor)似乎对我有用:

class A { has $.a }
multi sub infix:<anything-else> (A $a, A $b) {
    "works!({$a.a}, {$b.a})"
}
say A.new(:1a) anything-else A.new(:2a); 
Run Code Online (Sandbox Code Playgroud)

结果works!(1, 2)

我是不是做错了什么或有只是没有办法超载的标准orandxor运营商?

operator-overloading perl6

15
推荐指数
1
解决办法
123
查看次数

Raku 混淆后缀 ,= 操作符行为

这个raku 文档页面说操作员,=应该连接

左侧变量的内容和右侧的表达式

以类相关的方式。该文档还提供了一个带有Hash变量的示例:

my %a = :11a, :22b;
%a ,= :33x;
say %a # OUTPUT: «{a => 11, b => 22, x => 33}?»
Run Code Online (Sandbox Code Playgroud)

这对我有用,但是当我尝试为Array一些令人困惑的事情做同样的事情时:

my @a = 1, 2;
@a ,= 3;
say @a 
Run Code Online (Sandbox Code Playgroud)

输出类似于(\Array_94393785458840 = [Array_94393785458840 3]). 然而,我希望结果是[1, 2, 3]

我的问题是:这是预期的行为吗?如果是这样,这种操作的目的是什么?

operators raku

7
推荐指数
1
解决办法
118
查看次数

标签 统计

operator-overloading ×1

operators ×1

perl6 ×1

raku ×1