Perl 6中的数组变量数组

アレッ*_*ックス 4 perl6

如何在Perl 6中声明和创建"数组数组"类型的变量?在Perl的6文档中,没有任何相关内容.从理论上讲,我可以做到这一点

@@var1
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

Chr*_*oph 6

就像任何其他类型约束一样,Array在声明时只需在其名称前加上:

my Array @array-of-arrays;
Run Code Online (Sandbox Code Playgroud)

现在,您可以将数组指定为元素

@array-of-arrays[42] = [1, 2, 3];
Run Code Online (Sandbox Code Playgroud)

或利用自动生存

@array-of-arrays[1][2] = 42;
Run Code Online (Sandbox Code Playgroud)

您也可以选择更自由Positional的元素类型,但这会破坏自动生存.

可以将数组数组视为多维数组,因此您也可以使用多索引来访问其元素:

@array-of-arrays[1;2] = 42;
Run Code Online (Sandbox Code Playgroud)

据我所知,正确的多维数组声明为

my @multi-dim-array[5;6];
Run Code Online (Sandbox Code Playgroud)

尚未在Rakudo实施,但他们应该在圣诞节前到达.

  • @AlexanderSupertramp:原则上,`my Array [Array] @ a`,但是在Perl6中使用类型化数组不是很方便,因为它们名义上是键入而不是结构上的; 要添加到`@ a`,你必须做一些像`@a [0] =(my Array @ = [])`; 通常,将数组保持无类型更为实用,但有明显的例外(例如,本机类型的数组) (2认同)