2012-07-06 102 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 '+' => \+