数组切片中的多个组件 - 相当于 perl5:@a[0..1,3]
Multiple components in an array slice - equivalent to perl5: @a[0..1,3]
非常基本的问题,但我似乎无法在文档中找到有关多个范围的任何信息。
如何从一个 perl6 数组中 select 多个范围?
my @a = "a","b","c","d";
@a[0..1,3] # expecting array with a, b & d as p5
这似乎是 return 一种嵌套列表,Perl 6 语法是什么来实现在 Perl 5 中会产生的结果(即具有 a
、b
的数组) & d
)?
你的问题有点令人困惑,但假设你有错别字之类的,我会试着猜猜你在问什么。
这构成了一个简单的数组:
> my @a = "a", "b', "c", "d";
[a b c d]
这使得 Range
来自 0..1
和 3:
的匿名数组
> @[0..1,3];
[0..1 3]
如果你想让它从@a
数组中提取值,你必须引用它:
> @a[0..1,3];
((a b) d)
从 @a
中提取你要求的位——第一个元素是 @a
、(a,b)
的 0..1
部分——(不确定你为什么要在这里看到 c
..)
这是嵌套列表 -- 您要求的两位包括第一个字段中的列表,以及您在第二个字段中要求的值 d
。
如果你想让它展平而不是嵌套,你可以使用.flat
:
> @a[0..1,3].flat;
(a b d)
在 Raku(以前称为 Perl 6)中,0..1
产生单个项目,这是一个范围。在 Perl 5 中,0..1
立即扩展为两个数字。
我在 Raku 中最常犯的错误之一就是忘记把东西弄平。好处是在 Raku 中,我们基本上免费获得了相当于 Perl 5 的引用,这消除了很多混乱的引用和解引用。
非常基本的问题,但我似乎无法在文档中找到有关多个范围的任何信息。
如何从一个 perl6 数组中 select 多个范围?
my @a = "a","b","c","d";
@a[0..1,3] # expecting array with a, b & d as p5
这似乎是 return 一种嵌套列表,Perl 6 语法是什么来实现在 Perl 5 中会产生的结果(即具有 a
、b
的数组) & d
)?
你的问题有点令人困惑,但假设你有错别字之类的,我会试着猜猜你在问什么。
这构成了一个简单的数组:
> my @a = "a", "b', "c", "d";
[a b c d]
这使得 Range
来自 0..1
和 3:
> @[0..1,3];
[0..1 3]
如果你想让它从@a
数组中提取值,你必须引用它:
> @a[0..1,3];
((a b) d)
从 @a
中提取你要求的位——第一个元素是 @a
、(a,b)
的 0..1
部分——(不确定你为什么要在这里看到 c
..)
这是嵌套列表 -- 您要求的两位包括第一个字段中的列表,以及您在第二个字段中要求的值 d
。
如果你想让它展平而不是嵌套,你可以使用.flat
:
> @a[0..1,3].flat;
(a b d)
在 Raku(以前称为 Perl 6)中,0..1
产生单个项目,这是一个范围。在 Perl 5 中,0..1
立即扩展为两个数字。
我在 Raku 中最常犯的错误之一就是忘记把东西弄平。好处是在 Raku 中,我们基本上免费获得了相当于 Perl 5 的引用,这消除了很多混乱的引用和解引用。