나는, 차이를 알려진 적이 없어요?빈 해시 선언
빈 해시 선언
답변
일부 언어에서는 새 변수가 초기화되지 않은 언어로 제공됩니다. Perl에서는 스칼라가 정의되지 않은 상태로 만들어지고 배열과 해시는 비어있게 만들어집니다.
두 번째는 낭비입니다. 빈 목록을 빈 해시에 할당해도 아무 효과가 없습니다.
당신은 확실히 맞습니다. 차이점이 없습니다. 해시 (또는 배열)를 선언하면 빈 데이터 구조가 만들어집니다.
이것은 스칼라 선언과 약간의 차이가 있습니다. 스칼라는 선언되지만 정의되지 않습니다. 이것은 실제로 해시 나 배열에 대해 의미가 없기 때문에 아무런 차이가 없습니다. 당신이 defined
문서를 보면
use Data::Dumper;
my $scalar;
my $scalar2 = '';
print Dumper \$scalar;
print Dumper \$scalar2;
my %hash;
my %hash2 =();
print Dumper \%hash;
print Dumper \%hash2;
my @array;
my @array2 =();
print Dumper \@array;
print Dumper \@array2;
, 당신은 참조하십시오. 더 이상 사용되지 않습니다 집계 (해시 및 배열)에 정의의
"사용이 그 집합의 메모리 이제까지 할당했다 여부를보고하는 데 사용. 이 동작은 Perl의 차후 버전에서 사라질 수 있습니다. 대신 크기에 대한 간단한 테스트를 사용해야합니다. "
Re "스칼라의 선언과 약간의 차이가 있습니다 - 스칼라는 선언되지만 정의되지 않습니다."배열과 해시는 마찬가지로 배열을 할당 할 수 없습니다. 'perl -MDevel :: Peek -e '@ a = "x"; @ a =(); 덤프 (\ @ a); undef @a; 덤프 (\ @ a); '' – ikegami
'@a =();의 스칼라 값은'$ a = undef;'입니다. – ikegami
흠.하지만 테스트를 위해'$ scalar'에'defined'을 할 수는 있지만'@ a'에서도 같은 것을 할 수는 없습니다. – Sobrique
그건 내 직감이지만, 목적이 있다고 너무 많이 생각합니다! – fugu