找出Perl类的所有超类的最佳实践是什么?
发布时间:2020-12-15 21:55:58 所属栏目:大数据 来源:网络整理
导读:是否有标准的CPAN方法来查找Perl类的所有超类(或更好的整个超类树,直到UNIVERSAL)? 或者是为每个班级,班级的父母等简单地检查@ {“${$class} :: ISA”}的最佳做法? 解决方法 没有“标准方式”,因为这不是您想要做的标准事情.除了可视化之外,想要检查继承树
是否有标准的CPAN方法来查找Perl类的所有超类(或更好的整个超类树,直到UNIVERSAL)?
或者是为每个班级,班级的父母等简单地检查@ {“${$class} :: ISA”}的最佳做法? 解决方法
没有“标准方式”,因为这不是您想要做的标准事情.除了可视化之外,想要检查继承树的是OO红旗.
除了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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |