在Perl6中声明多个范围的数组

con*_*con 9 perl6 raku

我试图在Perl6中创建一个数组,该数组具有两个与Perl5中相同的范围:

my @cols = (3..9, 11..16);
use Data::Printer:from<Perl5>;
p @cols; exit;
Run Code Online (Sandbox Code Playgroud)

但是,这将创建一个二维数组

[
    [0] [
            [0] 3,
            [1] 4,
            [2] 5,
            [3] 6,
            [4] 7,
            [5] 8,
            [6] 9
        ],
    [1] [
            [0] 11,
            [1] 12,
            [2] 13,
            [3] 14,
            [4] 15,
            [5] 16
        ]
]
Run Code Online (Sandbox Code Playgroud)

应该是一维数组,就像(3..9, 11..16)在Perl5中那样:

[
    [0]  3,
    [1]  4,
    [2]  5,
    [3]  6,
    [4]  7,
    [5]  8,
    [6]  9,
    [7]  11,
    [8]  12,
    [9]  13,
    [10] 14,
    [11] 15,
    [12] 16,
    [13] 17,
    [14] 18,
    [15] 19,
    [16] 20
]
Run Code Online (Sandbox Code Playgroud)

我当然可以轻松解决这个问题,append但是我如何(3..9, 11..16)只在一行中获得Perl6 的Perl5结果呢?

Håk*_*and 12

..操作创建一个范围对象,因此您要创建2个范围在它的列表。为了列出“范围”中的值,您需要展开它们并展平它们。

有两种方法:

  • 更简短:`my @cols =固定3..9,11..16;`。 (4认同)