Я пытался перегрузить логический оператор 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);
приводит к works!(1, 2)
.
Я что-то не так делаю или просто нет способа перегрузить стандартные операторы or
, and
, xor
?