这可能是一个愚蠢的问题...以下代码输出的内容@arrayref
and @arraycont
分别。请注意它们之间的区别以及它们的值分配方式。我知道匿名数组的作用,但有人能解释为什么有区别吗?
非常感谢。
@arrayref = ();
@array = qw(1 2 3 4);
$arrayref[0] = \@array;
@array = qw(5 6 7 8);
$arrayref[1] = \@array;
print join "\t", @{$arrayref[0]}, "\n";
print join "\t", @{$arrayref[1]}, "\n";
@arraycont = ();
@array = qw(1 2 3 4);
$arraycont[0] = [@array];
@array = qw(5 6 7 8);
$arraycont[1] = [@array];
print join "\t", @{$arraycont[0]}, "\n";
print join "\t", @{$arraycont[1]}, "\n";
outputs
5 6 7 8
5 6 7 8
1 2 3 4
5 6 7 8
这创建了一个shallow数组的副本:
$arraycont[0] = [@array];
而这只是创建了对它的引用:
$arrayref[0] = \@array;
由于您稍后修改了数组:
@array = qw(5 6 7 8);
arrayref
仍然指向内存中相同的数组位置,因此当在 print 语句中取消引用时,它会打印当前数组值5 6 7 8
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)