gpt4 book ai didi

perl - 为什么在调用 new Term::ReadLine 时,perl 调试器会显示 Term::ReadLine::Stub::new?

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

Term::ReadLine::Stub::new(/usr/lib/perl5/5.8.8/Term/ReadLine.pm:243):

我期待看到 Term::ReadLine::new ,这通常是我 new 时的情况一袋。

有谁知道原因吗?

最佳答案

是传承。 Term::Readline 以 package Term::ReadLine::Stub 开头在顶部,然后在 package Term::ReadLine 内您将看到以下内容:

our @ISA;
if (defined &Term::ReadLine::Gnu::readline) {
@ISA = qw(Term::ReadLine::Gnu Term::ReadLine::Stub);
} elsif (defined &Term::ReadLine::Perl::readline) {
@ISA = qw(Term::ReadLine::Perl Term::ReadLine::Stub);
} elsif (defined $which && defined &{"Term::ReadLine::$which\::readline"}) {
@ISA = "Term::ReadLine::$which";
} else {
@ISA = qw(Term::ReadLine::Stub);
}

new()在 Term::ReadLine::Stub 中创建并继承到 Term::ReadLine 中。

如果调试器实际上告诉您从何处继承子程序(正如它所做的那样),它是最有帮助的。如果您被调试器引导到 Term::ReadLine,然后您必须遍历所有 @ISA 级别,直到找到定义了 new() 的级别,那么这将没有多大帮助。想象一下允许多层继承(如 Perl 那样)和多重继承(如 Perl 那样)的对象系统中的泥潭。

关于perl - 为什么在调用 new Term::ReadLine 时,perl 调试器会显示 Term::ReadLine::Stub::new?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6868173/

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