On Tue, May 26, 2009 at 9:03 PM, Patrick R. Michaud <[email protected]>wrote:

> On Tue, May 26, 2009 at 06:43:40PM -0500, John M. Dlugosz wrote:
> > Daniel Carrera daniel.carrera-at-theingots.org |Perl 6| wrote:
> >> The following construction doesn't do what a user might expect:
> >>
> >> for [email protected] -> $k { do_something($k,@foo[$k]) }
> >
> > Write ^[email protected] as a shortcut of [email protected], which is the
> > variation to exclude that endpoint if you would rather not write
> > [email protected].
>
> An even cleaner shortcut might be to use ^...@foo instead of ^[email protected]:
>
>    for ^...@foo -> $k { do_something($k, @foo[$k]) }
>
> Somewhat clearer could be:
>
>    for @foo.keys -> $k { do_something($k, @foo[$k]) }
>
> And some may prefer:
>
>    for @foo.kv -> $k, $v { do_something($k, $v) }
>
> I think the anti-pattern of "[email protected]" (or its incorrect
> form "[email protected]") should probably disappear in favor of
> the above forms instead.


Or perhaps

    for [email protected] -> $k { ... }

@foo.keys may not be what the user wanted if @foo is a sparse array.

-Scott
-- 
Jonathan Scott Duff
[email protected]

Reply via email to