【发布时间】:2018-10-25 22:43:40
【问题描述】:
我可以制作一个形状(固定大小)的数组:
my @array[3;3] = (
< 1 2 3 >,
< 4 5 6 >,
< 7 8 9 >
);
say @array; # [[1 2 3] [4 5 6] [7 8 9]]
say @array[1;1]; # 5
如何将其切片以获得我想要的任何特定列或对角线(行很容易)?
如何将每个维度中的索引列表转换为放入方括号中的正确内容?
而且,肯定有一些花哨的语法可以阻止我做一些复杂的事情:
my @diagonal = gather {
my @ends = @array.shape.map: { (0 ..^ $^a).List };
for [Z] @ends {
take @array[ $_ ] # how do I make that $_[0];$_[1];...
};
}
【问题讨论】:
-
我对您在切片形状数组的上下文中“行很容易”的评论感到困惑。当我声明一个成形数组并尝试有效访问一个切片(既不是整个数组也不是单个元素的任何内容)时,我收到错误消息“成形数组的部分尺寸视图尚未实现。抱歉。”我认为错误消息很差,因为我正在尝试全尺寸切片,但无论如何,我不明白您如何甚至可以切片行。
标签: multidimensional-array slice raku