【发布时间】:2021-01-07 04:59:56
【问题描述】:
据此
http://perldoc.perl.org/UNIVERSAL.html
我不应该使用 UNIVERSAL::isa() 而应该使用 $obj->isa() 或 CLASS->isa()。
这意味着首先要找出某个东西是否是引用,然后是对这个类的引用,我必须这样做
eval { $poss->isa("Class") }
然后检查 $@ 和所有这些口香糖,否则
use Scalar::Util 'blessed';
blessed $ref && $ref->isa($class);
我的问题是为什么?像这样调用 UNIVERSAL::isa 有什么问题?对于以下内容,它更干净:
my $self = shift if UNIVERSAL::isa($_[0], __PACKAGE__)
查看是否在对象上调用此函数。有没有一个很好的干净替代方案,不会因为 & 符号和潜在的长线而变得繁琐?
【问题讨论】:
标签: perl