develooper Front page | perl.perl6.language | Postings from March 2005

Re: for @list ⊂

Thread Previous | Thread Next
From:
Rod Adams
Date:
March 12, 2005 18:23
Subject:
Re: for @list ⊂
Message ID:
4233A426.2080006@rodadams.net
Luke Palmer wrote:

>Rod Adams writes:
>  
>
>>Are the following all legal and equivalent?
>>
>>   for 1..10 -> $a, $b { say $a, $b };
>>
>>   for 1..10 { say $^a, $^b };
>>
>>   sub foo ($a, $b) { say $a, $b };
>>   for 1..10 &foo;
>>    
>>
>
>Almost.  The last one should be:
>
>    for 1..10, &foo;
>  
>
Doh! I knew that.

> 
>  
>
>>What happens with:
>>
>>   for 1..10 -> *@a { say @a };
>>    
>>
>
>Good question.  That's a function of how C<for> interprets the arity.  The
>formal arity of a sub with *@ is Inf, so I suppose say would get 1..10
>and the loop would run once.
>
>That's probably the best way for C<for> to behave, because that's what
>I'd expect in this case.
>  
>
That's what I'd expect as well. It's not terribly useful, but worth 
clarifying.


A folowup question is how to get:

    for @a, @b, @c -> @x { say @x };

to work properly. "Properly" being defined here as three iterations.

The best guess I can put forward is:

    for \@a, \@b, \@c -> @x { say @x };

certainly

    for \@a, \@b, \@c -> $x { say $x };

should work. Are there any non-slashy versions of this?

-- Rod Adams


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About