我有一个对象引用,它可以是一个对象类型’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会断开它.