假设我有以下课程:
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;
}
Run Code Online (Sandbox Code Playgroud)
如何以与上一类+相同的方式重载某个类的运算符(例如)Str?
我猜这仅适用于在实例对象上调用的方法,并且multi operator-type:<OP>(T $lhs, T $rhs) { }对运算符使用语法是正确的解决方法,但我不确定。
例如,在Python中,以运算符(例如operator.__add__)和运算符(例如+)命名的特殊方法之间似乎存在对应关系。此外,自定义类的任何运算符重载都在该类内部完成。