【发布时间】:2019-07-08 19:07:54
【问题描述】:
我试图为自定义类重载逻辑 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);
我希望得到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);
结果为@987654329@。
是我做错了什么,还是无法重载标准 or,and,xor 运算符?
【问题讨论】: