2011-02-17 5 views

उत्तर

4

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

बहुआयामी वाक्य रचना (कोष्ठक के अंदर ; के उपयोग) और दो से अधिक भर में ज़िप दोनों कामों को सूचीबद्ध करता है, इसलिए मूल रूप से पोस्ट किया गया कोड अब काम करता है (यदि आप { ... } स्टब ब्लॉक के बजाय कुछ वास्तविक कोड प्रदान करते हैं)।