为什么我会收到此错误消息?
#!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
为什么我会收到此错误消息?
#!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
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;
}
多维语法(使用;
内部括号)和跨两个以上列表的压缩都有效,因此最初发布的代码现在有效(如果您提供一些真实代码而不是{ ... }
存根块)。