为什么一维数组引用其他一维数组称为多维数组?

时间:2015-12-18 19:19:19

标签: arrays perl multidimensional-array data-structures

我知道数组引用,但在Perl中,多维数组是一个引用其他一维数组的一维数组,任何人都可以用一个例子来解释这个吗?

1 个答案:

答案 0 :(得分:2)

my @a = ( "a", "b", "c" );
my @x;
$x[4] = \@a;
say $x[4]->[2];  # c

如果省略,则取消引用(->)隐含在“索引之间”。

my @a = ( "a", "b", "c" );
my @x;
$x[4] = \@a;
say $x[4][2];  # c

如您所见,这可用于创建多维数组。

通常使用匿名数组。 [ ... ]构造一个数组并返回对它的引用。

my @x;
$x[4] = [ "a", "b", "c" ];
say $x[4][2];  # c

同样常见的是让Perl通过名为“autovivification”的功能自动为您创建数组和引用。

my @x;
$x[4][2] = "c";
say $x[4][2];  # c

那是因为

$x[4][2] = "c";

的缩写
$x[4]->[2] = "c";

SCALAR->[EXPR1] = EXPR2;

实际上是

( SCALAR //= [ ] )->[EXPR1] = EXPR2;

所以

$x[4]->[2] = "c";

实际上是

( $x[4] //= [ ] )->[2] = "c";