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.