关于访问阵列数组

use*_*609 1 arrays perl

我曾经读过以下关于"数组数组"的例子.AOA是二维阵列

声称以下代码段用refs打印整个内容

for $aref ( @AoA ) {
  print "\t [ @$aref ],\n";
}
Run Code Online (Sandbox Code Playgroud)

并声称以下代码段用索引打印整个事物

for $i ( 0 .. $#AoA ) {
  print "\t [ @{$AoA[$i]} ],\n";
}
Run Code Online (Sandbox Code Playgroud)

$ aref代表什么?如何理解的定义@$aref@{$AoA[$i]}?谢谢.

Mat*_*Mat 5

$aref 代表"数组引用",即数组的引用.

my $my_aref = \@somearray;
Run Code Online (Sandbox Code Playgroud)

您可以使用以下语法从数组引用生成数组:

@{$my_aref}
Run Code Online (Sandbox Code Playgroud)

@{$my_aref} @somearray.(它不是副本,它实际上是相同的数组.)

在第二个示例中,$AoA[$i]是一个数组引用,并使用相同的语法取消引用它:@{$AoA[$i]}.

有关更多说明和示例,请参阅perlreftut.