在Perl中获取对象的类名

前端之家收集整理的这篇文章主要介绍了在Perl中获取对象的类名前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个对象引用,它可以是一个对象类型’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会断开它.

猜你在找的Perl相关文章