proposal: short => rewrite for function declarations

Andre Pany andre at s-e-a-p.de
Fri Oct 9 17:40:56 UTC 2020


On Friday, 9 October 2020 at 14:44:25 UTC, Adam D. Ruppe wrote:
> After a brief chat yesterday, I slapped this together:
>
> https://github.com/dlang/dmd/pull/11833
>
> In short, in a function declaration, it rewrites `=> ...;` into 
> `{ return ...; }`
>
> One benefit is shorter property accessors:
>
>     private int _x = 34;
>     @property x() => _x;
>     @property x(int v) => _x = v;
>
> But it also works basically anywhere
>
>     bool isNull() => this is null;
>     auto identity(T)(T a) => a;
>     @property y() in(true) => _x; // contracts still work too
>
> So it just extends the existing lambda shorthand to full 
> declarations too.
>
> See more in the PR description and the test case there.

If I remember correctly, the property setter in your example 
works, because the assignment _x = v returns an int.
In case you do not assign the value but call a method which has 
return type void, it won't work? (As far as I remember).

Overall I like your proposal.

Kind regards
Andre


More information about the Digitalmars-d mailing list