3

私が祝福された参照/オブジェクト$aとを持っていると仮定すると$b、それぞれが内部的にハッシュ参照として保存され、次のようになります。

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

算術演算をオーバーロードすることは可能ですか?これを行うとき:

my $c = $a + $b;

私は??に等しい祝福された参照$cを持っています$c->{_x}$a->{_x} + $b->{_x}

4

1 に答える 1

6

もちろん。オーバーロードされたsubforで目的のクラスの新しいオブジェクトに通常のコンストラクターを使用し、+その値をその合計(またはその他の必要なもの)に設定するだけです。

初期値を引数として取るコンストラクターがあるとするとnew、それは次のようなものになります。

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

use overload '+' => \+
于 2012-07-06T12:37:49.250 に答える