Вопрос по oop, perl – Какова лучшая практика для обнаружения всех суперклассов класса Perl?

8

Существует ли стандартный CPAN-способ обнаружения всех суперклассов класса Perl (или, что еще лучше, всего дерева суперклассов, вплоть до UNIVERSAL)?

Или лучше просто изучить@{"${$class}::ISA"} для каждого класса, родителей класса и т.д ...?

Error: User Rate Limit ExceededthisError: User Rate Limit Exceeded DVK
Error: User Rate Limit Exceeded tchrist

Ваш Ответ

4   ответа
8

@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
Error: User Rate Limit Exceeded"Hidden Treasures of Perl Core" @perl.com); DVK
Error: User Rate Limit Exceededcorelist
Error: User Rate Limit Exceeded DVK
0

mromro::get_linear_isa.

use mro;
my @superclasses = mro::get_linear_isa($class);
Error: User Rate Limit Exceededmro::get_linear_isaError: User Rate Limit Exceeded
4

use Class::ISA;
use Mojolicious;
print join "\n", Class::ISA::super_path("Mojolicious");

Mojo
Mojo::Base

1

@ISAuse base qw(...)use parent -norequire, ...@ISA...

Error: User Rate Limit Exceeded@ISAError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded DVK

Похожие вопросы