my @array = @{$array_ref};
이 배열이 저장하는 대상이 확실하지 않습니다. 아무도 내게 무슨 일이 일어나는지 설명해 줄 수 있습니까? 감사.이 특정 값은 무엇을 유지합니까? Perl
my @array = @{$array_ref};
이 배열이 저장하는 대상이 확실하지 않습니다. 아무도 내게 무슨 일이 일어나는지 설명해 줄 수 있습니까? 감사.이 특정 값은 무엇을 유지합니까? Perl
이것은 간단히 배열 참조를 역 참조하는 것입니다. $array_ref
은 배열에 대한 참조를 포함하고 @array
은 참조 된 배열의 내용으로 설정됩니다.
$ perl -E 'my $a = [1, 2, 3]; my @b = @{$a}; say $a; say @b'
ARRAY(0x100803ea0) # a reference to an array
123 # actual array
perlref을 읽을 필요가 있습니다.
간단히 말해 @array
은 $array_ref
이 가리키는 배열과 같습니다. 그것은 $array_ref
에 무엇이 들어 있는지 알지 못하면서 줄 수있는 가장 정확한 대답입니다.
$array_ref
은 아마도 배열 자체와 다른 배열에 대한 참조를 보유하고있을 것입니다. 배열 (이름이)은 요소가 있습니다 (비어 있지 않은 경우). 배열 참조 ($some_arrayref
)는 실제 배열을 참조하는 데 사용되는 스칼라 값입니다. 실제 배열은 명명 된 배열 (변수 이름 포함)이거나 익명 배열 일 수 있습니다 (명명 된 변수가 없지만 참조로만 참조).
$array_ref
이 나타내는 배열에있는 요소를 사용하려면 참조를 해제해야합니다. 하나의 구문은 @$array_ref
는 (배열 (@
)이 array_ref
이름 스칼라 ($
)에 의해 참조 "로 그 읽기)입니다. 내가 함께합니다 (@
, $
및 %
문자) sigils의 무리를 방해의 팬 적이 때 특히 참조가 더 복잡하거나 중첩 될 때 코드의 가독성을 방해한다고 생각합니다. Perl은 진행 상황을 명확하게하고 시각적으로 명확하게하는 중괄호를 허용합니다. 배열 (@{....}
) $array_ref
에 의해 참조 된 배열
Perl의 POD에서 perlreftut을 살펴보십시오. 좋은 출발점입니다.
$array_ref
은 목록/배열에 대한 참조입니다. 그래서 순서대로 목록 내용에 역 참조와 모든 내용을 얻을, 당신은
@{$array_ref}
을 사용하고이이 같은 다른 배열/목록에 할당 할 수 있습니다 :
이
my @array = @{$array_ref};
코드가한다 $ array_ref가 참조하는 배열의 최상위 복사본을 @array에 저장합니다.
use Storable;
@array = @{ dclone($array_ref) };
자세한 내용은 perldoc Storable
를 참조하십시오
Storable은 Perl과 함께 설치되는 표준 모듈입니다. 표준 Pargmatics 및 모듈의 목록을 보려면 perldoc perlmodlib
을 참조하십시오.
죄송하지만 배열에 대한 포인터가 아닙니다. 배열에 대한 직렬화 된 참조입니다. 참조는 포인터가 아닙니다. – shawnhcorey
고마워요. 고침. – zoul