2012-07-06 124 views
3

假设我有一个幸福的引用/对象$a$b,各内部存储为hashref并具有:重载运营商

$a->{_x} 
$b->{_x} 

是有可能过载的算术运算,所以当我将做到这一点:

my $c = $a + $b; 

我将有一个幸福的参考$c$c->{_x}等于$a->{_x} + $b->{_x}

回答

6

当然。只需使用您惯用的构造函数为+重载的子类中的所需类的新对象,并将其值设置为该总和(或其他任何您想要的值)即可。

假设你有new构造函数初始值作为参数,那会是沿路线的东西:

sub plus { 
    my $self = shift; 
    my $right = (shift or 0); 
    return MySuperNumberObject->new($self->{_x} + $right); 
}; 

use overload '+' => \+