package Number;
%OVERLOAD = (
"+" => \&add,
"*=" => "muas"
);
では、加法の関数 Number::add() と「クラス」Number (あるいは、基底
クラスの 1 つ) の中の乗法の代入形式 *= のメソッド muas を
宣言しています。このハッシュの value としては、 &{ ... } の中で使
用できるものがすべてを指定できますから、サブルーティン名、サブルーティン
へのリファレンス、無名のサブルーティンといったものがすべて使えます。
$a+$b を実行するときに、$a がパッケージ `Number' 内に
bless されたオブジェクトへのリファレンスである場合か、$a が
そのようなマスマジカルな加法を用意しているパッケージのオブジェクトでなく
ても、 $b が Number へのリファレンスである場合に、サブルーティン
$OVERLOAD{"+"} が呼び出されます。これは、 $a+=7 とか
$a++ といった、シチュエーションでも呼ばれます。「
See section マジック自動生成,」の節を参照してください。(「マスマジカル」という
言葉は、See section 多重定義, されたマスマティカル演算子によって起動
されるメソッドを指しています。)
Go to the first, previous, next, last section, table of contents.