2011-12-19 5 views
1

반복을 포함한 다음 Perl 코드를 읽었습니다.데이터 구조에 대한 설명

for my $j (0 .. $#{$dat[$Row]}) 
{ 
    $vectors{ $dat[$Row][$j] } = $j; 
} 

에 대한

$vectors{ $dat[$Row][$j] } 

스탠드를 무엇? $vectors->$dat[$Row][$j]에 해당합니까?

+1

귀하의 제목은 훨씬 개선 될 수

$vectors{ $dat[$Row]->[$j] } 

의 약자입니까? – reinierpost

답변

4
what does $vectors{ $dat[$Row][$j] } stand for? 

$dat[$Row]은 어레이에 대한 참조입니다. $dat[$Row][$j]은 분명히 해당 배열의 요소입니다. 값이 무엇이든 %vectors의 해시 키가되며 값은 $j이됩니다.

Is that equivalent $vectors->$dat[$Row][$j] 

아니

, 그 변수 $vectors하지 %vectors를 참조 할 것.

더 읽을 수있는 방법

이 될 수도 쓰기 : 또한 참조 역 참조, ->의 사용을 예시

my $aref = $dat[$Row]; 
for my $index (keys @$aref) { 
    my $key = $aref->[$index]; 
    $vectors{$key} = $index; 
} 

합니다.

1

$vectors은 다차원 배열 (참조 배열) $Row$j 두 개의 스칼라 인 해시입니다. 따라서 $dat[$Row][$j]에 의해 주어진 %vectors 해시의 키를 $j으로 설정하고 있습니다.

0

%vectors은 해시입니다.
$vectors{$k}$k
$dat[$Row][$j] 대한 해시 값을 따라서 루프가 키의 내용 및 인 해시를 생성한다

($Row 로우 열 $j)는 2-D 어레이의 요소이다 value는 열 인덱스입니다. 반복 그것으로 무엇을해야합니까 - 당신이 그것을 밖으로 철자 경우

0
$vectors{ $dat[$Row][$j] } 

# $Row is a row index. 
# $j is a column index. 
# (How inconsistent!) 

my $row = $dat[$Row]; # A ref to an array. 
my $key = $row->[$j]; # A value from the table. 
$vectors{$key} 
관련 문제