展平多维数组的最简单方法是什么?

最佳答案

使用List::Flatten似乎是最简单的:

use List::Flatten;

my @foo = (1, 2, [3, 4, 5], 6, [7, 8], 9);
my @bar = flat @foo;  # @bar contains 9 elements, same as (1 .. 9)


实际上,该模块导出单个简单函数flat,因此您也可以复制source code

sub flat(@) {
    return map { ref eq 'ARRAY' ? @$_ : $_ } @_;
}


您还可以使其递归以支持多个级别的拼合:

sub flat {  # no prototype for this one to avoid warnings
    return map { ref eq 'ARRAY' ? flat(@$_) : $_ } @_;
}

关于perl - Perl:展平多维数组的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5166662/

10-12 02:48