Perl에서 OOP를 사용하려고 시도했습니다. 내 문제는 클래스에서 변수를 설정하고 있지만 값을 시도하고 검색 할 때 손실됩니다. 나는이 문제가 눈부신 것이라고 확신하지만 좀 더 눈이 필요하다.Perl - 개체 값이 저장되지 않았습니다.
생성자 :
sub new
{
my ($class, $name) = @_;
my $self = {
_name => $name,
_times => []
};
bless ($self, $class);
return $self;
}
접근/테이터 방법
$js->addRun($duration, $curStartTime);
print "Times size: " . @{$js->times()} . "\n";
addRun에서
관련 코드() 서브 루틴 :
sub addRun {
my ($self, $duration, $runDateTime) = @_;
if (!defined($duration) || !defined($runDateTime)) { return 0; }
push(@{$self->{_times}},$duration);
}
메인 프로그램
sub times {
my ($self) = shift;
if (@_) { @{$self->{_times}} = shift }
print "times size: " . @{$self->{_times}} . "\n";
return @{$self->{_times}};
}
콜
이 코드를 실행하면 addRun 서브 루틴을 입력하고 값을 _times 변수에 푸시합니다. 그런 다음 접근 자/변경자를 호출하여 값을 인쇄합니다. 하지만 액세서/뮤 테이터에는 자체 인쇄 명령이 있으므로 반환하기 전에 값을 확인할 수 있습니다.
접근자가 올바른 값을 인쇄하지만 반환 된 내용을 인쇄 할 때 정의되지 않습니다. 내 구문 어딘가 엉망 이냐? 나는 바보 야?
감사
몇 가지 오류가 있었다 당신은 값이 정말 거지 있는지 확인하기 위해 개체에 데이터 :: 덤퍼를 사용하여 시도해 봤어 – Ether
'strict' 프라그마를 활성화하십시오 – daotoad