在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会断开它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |