2011-05-14 3 views
1

Perl에서 2 차원 배열을 만들 수 있습니다. 해시의 2 차원 어레이와 다른 점은 무엇입니까? 배열을 사용하여 해시 피쳐를 시뮬레이션 할 수있는 경우 왜 해시가 펄의 원시 데이터 구조입니까?Perl의 배열과 다른 점은 무엇입니까?

+0

2 차원 배열이 없습니다. 배열 배열이 있습니다. – Toto

+0

PDL에는 2D 배열이 있지만 OP의 의미는 아닙니다. –

+0

해시를 사용하여 배열을 시뮬레이션 할 수도 있지만, 배열이 기본 데이터 유형이 아닌 경우 더 나은 결과를 얻지는 못합니다. – mob

답변

0

많은 유형의 객체를 구성 할 때 new 메서드는 해시로 나타날 수있는 인수 목록을 전달할 수 있지만 실제로는 모든 짝수가 키이고 모든 홀수가 가치.

my $obj = Some::New::Class->new(
    name => 'Sam', 
    age => 0, 
    email => '[email protected]' 
); 

은 상당 할 수있는 : 당신은, 그러나, 지시 할 수 있습니다

my $obj = Some::New::Class->new(
    'name', 'Sam', 
    'age', 0, 
    'email', '[email protected]' 
); 

새로운() 이상과 같이 나타납니다 해시, 찾으려면이 만약

my $obj = Some::New::Class->new({ 
    name => 'Sam', 
    age => 0, 
    email => '[email protected]' 
}); 

귀하의 질문에 대답하지 않습니다, 나는 적어도 일부 통찰력을 제공 바랍니다.

+0

해시가 아닌 마지막 참조에서 해시에 * 참조를 전달합니다. 따라서 참조를 취소 할 코드는 new() 구현시 달라집니다. (당신은 아마 그것을 알았지 만, 명확히하기 위해서입니다.) – AAT

6

아마 당신은이 같은 데이터 구조를 가질 수 있음을 의미 : 작은 데이터에 대한

my $array_hash = [ 
    [ "key1", "value1" ], 
    [ "key2", "value2" ], 
]; 

이 잘 작동하지만, 이러한 배열은 약 1000 항목이있는 경우를 고려한다. 그런 다음 해당 키로 특정 항목을 찾으려면 전체 배열을 검색해야하는데 이는 느립니다.

원시 해시 유형은 빠른 검색을 허용하며 정확히 사용됩니다.

해시 테이블이 Perl에 내장 된 또 다른 이유는 유용한 데이터 구조이므로 모든 프로그래머가 자신을 구현해야하는 것은 아닙니다.

관련 문제