【发布时间】:2018-10-13 08:55:21
【问题描述】:
扁平化多维数组的最短方法是什么?
以下是我的意思的一些示例:
# 2D array
my @a = [1,2],[3,4];
say @a».Slip.flat; # prints (1 2 3 4)
# 3D array
my @b = [[1,2],[3,4]],[[5,6],[7,8]];
say @b».Slip».flat».Slip.flat; # prints (1 2 3 4 5 6 7 8)
# but needs to know how many dimensions
# there are to flatten
是否可以递归地展平一个数组,例如@b,而无需编写递归下降到其中的 sub 或不知道其维数的任何知识?
我问这个是因为我相信编译器(现在或将来的实现)能够优化更多基于运算符的解决方案而不是 sub。
【问题讨论】:
-
有一天你可以使用
[**]。现在,您可以使用[*;*;*;*;*](您可以指定比实际存在更多的维度)。请参阅stackoverflow.com/a/37230217/1077672您是否认为您的问题与链接问题之一重复或保证自己的答案? -
@raiph 已记录,但未编入索引:docs.perl6.org/language/subscripts#Multiple_dimensions
标签: arrays multidimensional-array raku