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 -> [EMAIL PROTECTED] { 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 [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED] -> @x { say @x };
certainly
for [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED] -> $x { say $x };
should work. Are there any non-slashy versions of this?
-- Rod Adams