【发布时间】:2019-09-12 19:23:10
【问题描述】:
假设我有以下课程:
class A {
has $.val;
method Str { $!val ~ 'µ' }
}
# Is this the right way of doing it?
multi infix:<~>(A:D $lhs, A:D $rhs) {
('(', $lhs.val, ',', $rhs.val, ')', 'µ').join;
}
如何以与上一个类中的Str 相同的方式为一个类重载一个运算符(例如,+)?
我猜这仅适用于在实例对象上调用的方法,并且对运算符使用 multi operator-type:<OP>(T $lhs, T $rhs) { } 语法是正确的方法,但我不确定。
例如,在 Python 中,以运算符命名的特殊方法(例如 operator.__add__)和运算符(例如 +)之间似乎存在对应关系。此外,自定义类的任何运算符重载都是在类内部完成的。
【问题讨论】: