我知道数组引用,但在Perl中,多维数组是一个引用其他一维数组的一维数组,任何人都可以用一个例子来解释这个吗?
答案 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";