代码之家  ›  专栏  ›  技术社区  ›  Richard J. Acton

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

  •  11
  • Richard J. Acton  · 技术社区  · 7 年前

    非常基本的问题,但我似乎找不到任何关于多个范围的文件。

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

    my @a = "a","b","c","d";
    
    @a[0..1,3] # expecting array with a, b & d as p5
    

    a , b d )?

    2 回复  |  直到 7 年前
        1
  •  10
  •   Curt Tilmes    7 年前

    你的问题有点让人困惑,但假设你只是有打字错误之类的,我会试着猜你在问什么。

    这就形成了一个简单的数组:

    > 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 --第一个元素是 0..1 @a , (a,b) --(不知道你为什么要看 c

    这就是嵌套列表——您请求的两位包括第一个字段中的列表和值 d 你在第二个领域要求的。

    如果您想将其展平而不是嵌套,可以使用 .flat :

    > @a[0..1,3].flat;
    (a b d)
    
        2
  •  5
  •   Christopher Bottoms zerkms    6 年前

    0..1 立即展开为两个数字。

    我在拉库最常见的一个错误就是忘了把东西弄平。好处是,在Raku中,我们基本上可以免费获得相当于perl5的引用,这消除了大量混乱的引用和取消引用。

    推荐文章