由于只是重载 '='
在 Perl 中的行为不像人们所期望的那样,这样做的正确方法是什么?
引自 overload文档:
Simple assignment is not overloadable (the
'='
key is used for the Copy Constructor). Perl does have a way to make assignments to an object do whatever you want, but this involves usingtie()
, notoverload
- see tie and the COOKBOOK examples below.
我已阅读 COOKBOOK以及 tie 的文档并且无法弄清楚如何以这种方式使用它。
我希望能够像这样创建一个对象:
my $object = Object->new()
然后当我将它分配给某些东西时,我希望它进行一些特殊处理。例如:
$object = 3
会在内部做类似 $object->set_value(3);
的事情我知道这不一定是好的做法。这更像是一个教育问题。我只想知道如何做到这一点。不是该不该做。
最佳答案
你不能那样做。您可以向变量添加魔法,以便在将值分配给变量后调用 sub ,但这与您所要求的相去甚远。
再说,你问的根本没有意义。下面应该怎么做?
my $object;
$object = Object->new();
$object = Object->new();
关于perl - 在 Perl 中重载 '=',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922779/