在Perl中重载'='

tjw*_*992 4 oop perl operator-overloading equals-operator

因为'='在Perl中简单地重载并不像人们期望的那样,所以这样做的正确方法是什么?

从报价超载的perldoc:

简单赋值不可重载(该'='键用于复制构造函数).Perl确实有办法让对象做任何你想做的事情,但这涉及到使用tie(),而不是overload- 请参阅下面的领带COOKBOOK示例.

我已经阅读了COOKBOOK和文件的领带,我很难弄清楚如何以这种方式使用它.


我希望能够像这样创建一个对象:my $object = Object->new()然后当我将它分配给某些东西时,我希望它能做一些特殊的处理.

例如:$object = 3内部会做类似的事情$object->set_value(3);

我知道这不一定是好习惯.这更像是一个教育问题.我只是想知道如何做到这一点.不是否应该这样做.

ike*_*ami 7

你不能这样做.您可以为变量添加魔法,以便在将值赋给变量后调用子,但这与您的要求相差甚远.


此外,你提出的问题并没有多大意义.以下应该怎么做?

my $object;
$object = Object->new();
$object = Object->new();
Run Code Online (Sandbox Code Playgroud)