数组切片中的多个组件 - 相当于perl5:@a [0..1,3]

Ric*_*ton 11 slice perl6 raku

非常基本的问题,但我似乎无法找到有关文档中多个范围的任何内容.

如何从perl6数组中选择多个范围?

my @a = "a","b","c","d";

@a[0..1,3] # expecting array with a, b & d as p5
Run Code Online (Sandbox Code Playgroud)

这似乎回到一种嵌套列表的,什么是Perl 6的语法acheive结果,这将在Perl 5(即数组一代产量a,b&d)?

Cur*_*mes 10

你的问题有点令人困惑,但假设你有错字或其他什么,我会试着猜你在问什么.

这使得一个简单的数组:

> my @a = "a", "b', "c", "d";
[a b c d]
Run Code Online (Sandbox Code Playgroud)

这使得一个Rangefrom 0..1和3 的匿名数组:

> @[0..1,3];
[0..1 3]
Run Code Online (Sandbox Code Playgroud)

如果您希望它从@a数组中提取值,则必须引用它:

> @a[0..1,3];
((a b) d)
Run Code Online (Sandbox Code Playgroud)

拉你问从位@a-第一个元素是0..1的部分@a,(a,b)- (不知道为什么你想看看c在这里..)

这是嵌套列表 - 您要求的两个位包括第一个字段中的列表,以及d您在第二个字段中请求的值.

如果你想要扁平化而不是嵌套,你可以使用.flat:

> @a[0..1,3].flat;
(a b d)
Run Code Online (Sandbox Code Playgroud)


Chr*_*oms 5

在Perl 6中,0..1结果是一个项目,这是一个范围.在Perl 5中,0..1立即扩展为两个数字.

Perl 6中最常见的一个错误就是忘记了事情.好处是,在Perl 6中,我们基本上可以免费获得相当于Perl 5的引用,这消除了大量凌乱的引用和解除引用.