2011-07-29 2 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이하는 것처럼)을 허용하는 객체 시스템에서의 늪지대가 있다고 상상해보십시오.

관련 문제