首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我不能使用UNIVERSAL::isa呢?

为什么我不能使用UNIVERSAL::isa呢?
EN

Stack Overflow用户
提问于 2008-10-15 10:57:47
回答 5查看 6.6K关注 0票数 17

根据这个

http://perldoc.perl.org/UNIVERSAL.html

我不应该使用UNIVERSAL::isa(),而应该使用$obj->isa()或CLASS->isa()。

这意味着首先要找出某个东西是否是引用,然后是对这个类的引用,我必须这样做

代码语言:javascript
复制
eval { $poss->isa("Class") }

检查一下$@和所有的口香糖,否则

代码语言:javascript
复制
use Scalar::Util 'blessed';
blessed $ref && $ref->isa($class);

我的问题是为什么?UNIVERSAL::isa这样调用有什么问题吗?对于像这样的东西,它要干净得多:

代码语言:javascript
复制
my $self = shift if UNIVERSAL::isa($_[0], __PACKAGE__)

查看是否正在对象上调用此函数。有没有一个很好的干净的替代方案,不会因为和号和潜在的长行而变得繁琐?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/204316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档