gpt4 book ai didi

perl - 在 Perl 中获取对象的类名

转载 作者:行者123 更新时间:2023-12-01 18:34:03 26 4
gpt4 key购买 nike

我有一个对象引用,它可能是对“FooInvalidResults”类型的对象的引用

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

下面的方法可行吗?

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

最佳答案

字符串比较类名通常是一个坏主意,因为它破坏了基于子类型的多态性,并且因为对对象的私密细节(例如其确切的包名称)进行过多的关注通常不是良好的面向对象实践。

相反,请编写 $result->isa('FooInvalidResults') — 或者,如果您对 $result 不是对象的可能性感到偏执所有,有福$result && $result->isa('FooInvalidResults')

使用 UNIVERSAL::isa 是一个坏主意,因为某些对象(例如,用于测试的模拟对象)有合法的理由覆盖 isa 方法,并调用 UNIVERSAL::isa 打破了这一点。

关于perl - 在 Perl 中获取对象的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556032/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com