加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

在Perl中获取对象的类名

发布时间:2020-12-15 22:03:38 所属栏目:大数据 来源:网络整理
导读:我有一个对象引用,它可以是一个对象类型’FooInvalidResults’的引用 有一个名为FooInvalidResults.pm的文件,其中有一行’package FooInvalidResults’. 会做以下工作吗? my $class = blessed $result;if ($class eq 'FooInvalidResults') { # do something
我有一个对象引用,它可以是一个对象类型’FooInvalidResults’的引用

有一个名为FooInvalidResults.pm的文件,其中有一行’package FooInvalidResults’.

会做以下工作吗?

my $class = blessed $result;
if ($class eq 'FooInvalidResults') {
  # do something
} else {
  # do something else
}

解决方法

字符串比较类名通常是一个坏主意,因为它基于子类型打破了多态性,并且因为通常不太好的OO练习,就像一个对象的密切细节,如其确切的包名称一样.

相反,写$result-> isa(‘FooInvalidResults’) – 或者如果你对$result不是一个对象的可能性是偏执的,那么祝福$result&& $result-> ISA( ‘FooInvalidResults’).

使用UNIVERSAL :: isa是一个坏主意,因为某些对象(例如,用于测试的模拟对象)具有合法的原因来覆盖isa方法,并调用UNIVERSAL :: isa会断开它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读