Go to the first, previous, next, last section, table of contents.


多重定義関数の宣言

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.

検索式: