私が祝福された参照/オブジェクト$a
とを持っていると仮定すると$b
、それぞれが内部的にハッシュ参照として保存され、次のようになります。
$a->{_x}
$b->{_x}
算術演算をオーバーロードすることは可能ですか?これを行うとき:
my $c = $a + $b;
私は??に等しい祝福された参照$c
を持っています$c->{_x}
$a->{_x} + $b->{_x}
私が祝福された参照/オブジェクト$a
とを持っていると仮定すると$b
、それぞれが内部的にハッシュ参照として保存され、次のようになります。
$a->{_x}
$b->{_x}
算術演算をオーバーロードすることは可能ですか?これを行うとき:
my $c = $a + $b;
私は??に等しい祝福された参照$c
を持っています$c->{_x}
$a->{_x} + $b->{_x}
もちろん。オーバーロードされたsubforで目的のクラスの新しいオブジェクトに通常のコンストラクターを使用し、+
その値をその合計(またはその他の必要なもの)に設定するだけです。
初期値を引数として取るコンストラクターがあるとするとnew
、それは次のようなものになります。
sub plus {
my $self = shift;
my $right = (shift or 0);
return MySuperNumberObject->new($self->{_x} + $right);
};
use overload '+' => \+