2010-04-30 3 views

답변

9

예, foreach 문에있는 항목은 순서대로 반복됩니다.

해시의 요소를 반복하는 동안 혼란에서 발생할 수있는 귀하의 질문 :

my %hash = ('a' => 1, 'b' => 2, 'c' => 3); 
foreach my $key (keys %hash) { print $key } ; # output is "cab" 

그러나 겉으로는 임의의 순서는 (데이터 펄 해시 펄 해시 테이블에 저장하는 방법 데이터의 유물이다 테이블은 주문하지 않음). foreach이 아닌 해시 테이블의 순서를 "변경"하는 것은 keys 문입니다. 당신은`키를 호출하는 경우 -

+1

here을 연결 '키를 삽입하거나 삭제하지 않고 동일한 해시를 반복적으로 수행하면 매번 동일한 순서로 키가 반환됩니다. 데이터는 먼저 해시에 데이터를 저장하는 방식으로 변경됩니다. 해시는 결정적이지만 예측할 수없는 순서로 데이터를 저장합니다 (대부분의 실제적인 목적을 위해 효과적으로 정렬되지 않음). –

+1

관련 질문에 대한 링크를 추가하기 만하면됩니다. [Perl은 일관되게 정렬 된 해시 키를 반환하도록 보장됩니까? - 스택 오버플로] (http://stackoverflow.com/questions/1256502/is-perl-guaranteed-to-return-consistently-ordered-hash-keys) – sdaau

1

중간에 목록을 변경하지 않으면 일관된 순서로 나타납니다.

0
펄의 foreach 루프 해시 주문이 겉으로는 무작위 이유에 대한 추론은 perlsec 문서에

는`keys`이 해시 테이블의 순서를 변경하지 않습니다 그냥 현학적으로

관련 문제