On 10.06.2018 12:21, OlegZ wrote:
On Saturday, 9 June 2018 at 22:28:22 UTC, Ali Çehreli wrote:
There is some explanation at the following page, of how the lambda
syntax is related to the full syntax:
http://ddili.org/ders/d.en/lambda.html#ix_lambda.=%3E
copy rect from article as image
https://i.gyazo.com/c23a9139688b7ed59fbe9c6cdcf91b93.png >
well, I can to remember that lambda () => { return ..; } returns another
implicit lambda
you shouldn't remember it. you need to understand that `a=>2*a` is short
form of `(a) { return 2a; }. So using `a=>{ return 2*a; }` you get
```
(a) { return (){ return 2*a; }; }
```
i.e. a function returning delegate.
```
a => { return 2*a; }
/\ \ /
|| \ /
|| \ /
|| \ /
|| \ /
This is \ /
function \ This is definition of delegate
definition \
so you have a function that returns delegate.
```
it's like
a => a => 2*a;
or
(a){ return () { return 2*a; }
just first version is much simpler and namely convenience is the reason
of this syntax I guess. >
can somebody tell me please what was the reason that lambda (blah) => {
return value + 1; } actionally returns another lambda that returns
value+1? what case it can be usefull? why Dlang gives me lambda of
lambda where I want lambda written with "=> { return"?
I am expecting some magic and simple trick with lambdas.
You misuse two different form of the same. The form with "=>" is very
convenient if expression is short, in other cases the form `(){}` is
suited better.