Gordon:

...
case 5. X = ",x); } )();
call_function!( (x) => { writeln("lambda, case 6. X = ",x); } )(); call_function!( (x) => writeln("lambda, case 7. X = ",x) )();
}

There is also the simpler syntax:

x           =>   writeln("lambda,   case 8. X = ", x)


So I've learned that syntaxes in cases 2,4,6 are wrong, but they still compile. May question is - what do they do? what usage do they have (since they do not trigger a compilation warning)?


Observe:

void main() {
    import std.stdio;

    auto f = (int x) => { x.writeln; };
    f(10)();
}


It prints 10.

The syntax for lambdas is "... => ...", while (...){...} was the older syntax. If you use both, you are creating a lambda that returns a lambda.

Bye,
bearopile

Reply via email to