sno*_*kin 3 perl operator-overloading
假设我有一个受祝福的引用/对象,$a并且$b每个内部存储为hashref并具有:
$a->{_x}
$b->{_x}
Run Code Online (Sandbox Code Playgroud)
是否有可能重载算术运算,所以当我这样做时:
my $c = $a + $b;
Run Code Online (Sandbox Code Playgroud)
我将有一个$c与... $c->{_x}相等的祝福参考$a->{_x} + $b->{_x}?
当然.只需将您常用的构造函数用于重载子类中所需类的新对象,+并将其值设置为该总和(或其他任何您想要的值).
假设你有new一个以初始值为参数的构造函数,那就是以下几行:
sub plus {
my $self = shift;
my $right = (shift or 0);
return MySuperNumberObject->new($self->{_x} + $right);
};
use overload '+' => \+
Run Code Online (Sandbox Code Playgroud)