Я пытался перегрузить логический оператор 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?