我试图在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))
Run Code Online (Sandbox Code Playgroud)或flat:
my @cols = (3..9, 11..16).flat
Run Code Online (Sandbox Code Playgroud)