gpt4 book ai didi

perl - 查找 Perl 类的所有父类(super class)的最佳实践是什么?

转载 作者:行者123 更新时间:2023-12-04 06:06:42 25 4
gpt4 key购买 nike

是否有一种标准的 CPAN 方法可以找出 Perl 类的所有父类(super class)(或者更好的是整个父类(super class)树,直到 UNIVERSAL)?
或者最好的做法是简单地检查 @{"${$class}::ISA"}对于每个类(class),类(class)的家长等?

最佳答案

没有“标准方式”,因为这不是您想做的标准事情。对于可视化以外的任何事情,想要检查您的继承树都是面向对象的危险信号。

除了 Class::ISA,还有 mro::get_linear_isa() .两者都已成为核心一段时间,因此它们可以被视为某些定义的“标准”。两者都将继承显示为一个平面列表,而不是一棵树,这主要用于深度魔法。

perl5i meta object提供两者 linear_isa() ,就像 mro(它只是调用 mro)和 ISA()返回类' @ISA .它可用于使用简单的递归构造树,而无需进入符号表。

use perl5i::2;

func print_isa_tree($class, $depth) {
$depth ||= 0;

my $indent = " " x $depth;
say $indent, $class;

for my $super_class ($class->mc->ISA) {
print_isa_tree($super_class, $depth+1);
}

return;
}


my $Class = shift;
$Class->require;

print_isa_tree($Class);

__END__
DBIx::Class
DBIx::Class::Componentised
Class::C3::Componentised
DBIx::Class::AccessorGroup
Class::Accessor::Grouped

关于perl - 查找 Perl 类的所有父类(super class)的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10870581/

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