2011-02-17 15 views

cevap

4

Rakudo henüz lol ("listelerinin listesi") formu uygulamıyor ve bu yüzden @a;@b;@c ayrıştıramıyor. Aynı sebeple, zip henüz üç listeyi alan bir form içermiyor. Açıkçası hata mesajı harikadan daha azdır.

Orada iyi bir çözüm henüz gerçekten değil, ama burada işi olacaktır şey:

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; 
} 
2

çok boyutlu sözdizimi (Pars içeride ; kullanımı) ve daha iki den genelinde zip her iki işi de listeler, böylece orijinal olarak gönderilen kod şimdi çalışır ({ ... } saplama bloğundan ziyade gerçek bir kod sağlarsanız).