Well, the Ruby/Rust syntax would serve us well here too:

$things->forEach(|$v| {
    foo($v);
    bar($v);
});

On 19 Jun, 2017, at 09:43 PM, Rasmus Schultz <ras...@mindplay.dk> wrote:

I actually like this syntax, but what would it look like for multi-statement 
closures?

A nested set of curly braces around the body would look pretty messy.

    $things->forEach({$v => { foo($v); bar($v); }});


On Mon, Jun 19, 2017 at 4:43 PM, Levi Morrison <le...@php.net> wrote:
On Sun, Jun 18, 2017 at 1:44 PM, Ilija Tovilo <ilija.tov...@me.com> wrote:
Sorry, I wasn’t aware of that.

What do you think of the Ruby/Rust style syntax that Levi proposed a while back?

$someDict
     ->map(|$v| $v * 2)
     ->filter(|$v| $v % 3);

This one has a few advantages:

1. It has syntax (a lot of) developers are already familiar with
2. It has no ambiguities and is fully backward compatible
3. It’s the shortest of all options available (two `|` characters and one space)

We determined that the arrow between the parameters and the expression
would still be required. Given this limitation I think this syntax is
seviceable:

    $someDict
        ->map({$v => $v * 2})
        ->filter({$v => $v % 3});

Sometime this week I intend to start another thread that narrows us
down to two choices.

Reply via email to