是否有下标语法从2D数组中提取对角线?

时间:2019-05-03 07:11:30

标签: arrays perl6 matrix-indexing arrayaccess

我通常可以按照syntax在文档页面上“向下钻取/切片”成具有多个维度(并展平)的数组。一个非常酷的功能。例如:

my @a=[[1,2,3],
       [4,5,6],
       [7,8,9]];

我可以使用以下方法选择上面的第2列:

say @a[0,1,2;1]; #This output (2,5,8)

是否可以使用类似的紧凑语法提取对角线(1,5,9)?

1 个答案:

答案 0 :(得分:9)

say @a.[ 0,1,2 ; { $++ } ] ; # (1 5 9)

因此,我使用的是1,它是Block,而不是1,它的计算结果为{ $++ }

当P6遇到可调用的代码对象作为下标值时,它将为要评估的每个切片调用一次,在这种情况下,第0,第1和第2行。

$是匿名标量状态变量。