gpt4 book ai didi

Perl - 是类的对象实例吗?

转载 作者:行者123 更新时间:2023-12-05 08:55:35 25 4
gpt4 key购买 nike

有没有办法检查一个对象是否是一个类的实例?如果一个对象被类祝福,它就是一个类的实例:

package Example;

sub new {
$self = {};
bless($self, shift);
return $self;
}

############

use Example;
$exp = Example->new(); # $exp is now an 'instance' of Example
# something like instanceof($exp, Example) would return 1

最佳答案

来自 Scalar::Utilblessed() 子程序返回对象所属类的名称。

say blessed $exp; # prints "Example"

对于你的测试,你会使用类似的东西:

if (blessed $exp eq 'Example') { ...}

如果子类化可能是一个问题,那么请改用 isa()

if ($exp->isa('Example')} { ... }

但如果 $exp 不是对象,则会引发错误,因此请先调用 blessed() 来保护调用。

if (blessed($exp) and $exp->isa('Example')) { ... }

isa()UNIVERSAL 上的一个方法类,每个类都是 UNIVERSAL 的子类,所以每个对象都有 isa() 方法。

关于Perl - 是类的对象实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45376119/

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