2013-05-09 2 views
0

나는이 코드 조각 (수정 발췌)을 가로 질러왔다? 단순히하지 마시오.펄 Autovivication를 사용하는 경우

my $respMap; 
my @respIdArray; 
foreach my $respId (@$someList) { 
     push(@respIdArray, $respId); 
} 
$respMap->{'ids'} = \@respIdArray; 
return $respMap; 

다음과 같은 후속 조치 : 누군가 자동 백업을 사용할 수 있습니까?

+0

'@ $ someList'가 비어있는 경우 다시 작성하면 미묘한 차이가 발생합니다. 또한 암시 적 배열 참조 할당 만 다시 작성했지만 암시 적 hashref 할당은 다시 작성하지 않은 이유가 궁금합니다. – pilcrow

답변

1

어느 쪽이든 올바른 방법입니다. 배열 참조 $respIdArray을 사용하는 첫 번째 배열과 두 번째 일반 배열 @respIdArray. 복잡한 데이터 구조 (체크 perldoc perlreftut)를 구축 할 때 배열 참조가 필요하지만 어느 것을 선택해야하는지는 사용자가 결정합니다.

두 경우 모두 $respMap->{'ids'}에 대한 배열 참조를 지정하므로 예제는 실제로 매우 유사합니다.

그리고 btw, 자동 화는 또 다른 일이며 데이터 구조의 동적 생성과 관련이 있습니다.

1

자동 구조는 심층 구조를 다룰 때 더욱 유용합니다.

push(@{$hash{'key'}{$subkey}}, 'value');