2011-07-29 1 views

答えて

3

これは継承です。用語:: 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()はターム:: ReadLineメソッド::スタブ内に作成し、長期に継承さ:: ReadLineメソッド。

デバッガーは、実際にサブがどこから継承されているかを伝える場合に最も役立ちます。デバッガによってTerm :: ReadLineに指示され、new()を定義したものが見つかるまで、すべての@ISAレベルを調べなければならない場合はあまり役に立ちません。複数層継承(Perlのように)と複数の継承(Perlのように)を可能にするオブジェクトシステムの泥沼を想像してみてください。