Si la sobrecarga fué especificada a través
de una referencia a subrutina se usa una llamada como subrutina mientras que si
se especificó como referencia simbólica se usa la sintáxis de método. Por ejemplo,
si $a
y $b
son dos objetos Math::BigFloat
, para las
declaraciones
package Math::BigFloat; use overload "*" => \&fmul, "+" => "fadd", "neg" => sub { Math::BigInt->new($_[0]->fneg()) };tendríamos los siguientes ejemplos de traducciones:
$a*$b |
Math::BigFloat::fmul($a, $b, "") |
$a+$b |
$a->fadd($b, "") |
-$a |
(sub { Math::BigFloat->new($_[0]->fneg()) })->($a, undef, "") |
Casiano Rodríguez León