perl6/rakudo:无法解析postcircumfix:sym<( )>

5
为什么会出现这个错误信息?
#!perl6
use v6;

my @a = 1..3;
my @b = 7..10;
my @c = 'a'..'d';


for zip(@a;@b;@c) -> $nth_a, $nth_b, $nth_c { ... };


# Output:

# ===SORRY!===
# Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 9
2个回答

3
Rakudo目前还没有实现lol(“列表的列表”)形式,因此无法解析@a;@b;@c。由于同样的原因,zip目前也没有接受三个列表的形式。很明显,错误信息不够好。
目前还没有一个好的解决方法,但是以下方法可以完成工作:
sub zip3(@a, @b, @c) {
    my $a-list = flat(@a.list);
    my $b-list = flat(@b.list);
    my $c-list = flat(@c.list);
    my ($a, $b, $c);
    gather while ?$a-list && ?$b-list && ?$c-list {
        $a = $a-list.shift unless $a-list[0] ~~ ::Whatever;
        $b = $b-list.shift unless $b-list[0] ~~ ::Whatever;
        $c = $c-list.shift unless $c-list[0] ~~ ::Whatever;
        take ($a, $b, $c);
    }
}

for zip3(@a,@b,@c) -> $nth_a, $nth_b, $nth_c {
    say $nth_a ~ $nth_b ~ $nth_c;
}

3
多维语法(在括号内使用 ;)和跨越两个以上列表的 zip 都可行,因此原始发布的代码现在可以工作(如果您提供一些真实的代码而不是 { ... } 骨架块)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接