perl - 在 Perl 中重载 '='

标签 perl oop operator-overloading equals-operator

由于只是重载 '='在 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 using tie(), not overload - 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/

相关文章:

excel - 使用 Spreadsheet::ParseExcel 时出错

Perl 解析数组哈希的哈希

java - 单例模式: getInstance() vs Passing the singleton object?

c++ - 用模板实现虚函数的覆盖机制

c++ - 关于c++中重载流运算符的几个问题

unit-testing - perl 测试模拟 make_path

perl - 关于优先级+重复修饰符的问题

java - 不同类型输入消息的设计模式

c++ - 运算符++ : reference vs value return and unused argument

c++ - 使用 << 运算符同时写入文件和 cout