有什么区别
myArr1 => \@existingarray
和
myArr2 => [
@existingarray
]
我将 @existingarray
分配给 HashMap 中的元素。
我的意思是内部到底发生了什么。对于第一个数组,它指向同一个数组,对于第二个数组,它使用 @existingarray
提前致谢
最佳答案
是的,第一个获取引用,第二个进行复制,然后获取引用。
[ ... ]
是匿名数组构造函数,将内部列表转换为 arrayref。
因此 @a = 1, 2, 3
,
[ @a ]
与
相同[ 1, 2, 3 ]
(数组被展平为列表)或
do {
my @b = @a;
\@b;
}
实际上,元素被复制。
另外,
my ($ref1, $ref2) = (\@a, [@a]);
print "$ref1 and $ref2 are " . ($ref1 eq $ref2 ? "equal" : "not equal") . "\n";
将确认它们不相同。如果我们这样做
$ref1->[0] = 'a';
$ref2->[0] = 'b';
那么 $a[0]
将等于 a
而不 b
。
关于arrays - Perl 中的数组赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12507687/