Syntax question about inlined functions/delegates/lambdas
Gordon
me at home.com
Mon Dec 30 11:00:48 PST 2013
Hello,
I have a syntax question regarding the correct usage of
function/delegates/lambdas, arising after a used it incorrectly
and it took a long time to debug and see what's going on.
I found out there's a syntax which compiles OK but doesn't work
(as I naively expected).
The following is a concise example:
===
import std.stdio;
import std.functional;
void call_function(FUNC...)()
{
alias unaryFun!FUNC _Fun;
_Fun(42);
}
void main()
{
call_function!( function(x) { writeln("funcion, case
1. X = ",x); } )();
call_function!( function(x) => { writeln("funcion, case
2. X = ",x); } )();
call_function!( delegate(x) { writeln("delegate, case
3. X = ",x); } )();
call_function!( delegate(x) => { writeln("delegate, case
4. X = ",x); } )();
call_function!( (x) { writeln("funcion, case
5. X = ",x); } )();
call_function!( (x) => { writeln("lambda, case
6. X = ",x); } )();
call_function!( (x) => writeln("lambda, case
7. X = ",x) )();
}
===
The output is:
===
$ rdmd ./delegate_question.d
funcion, case 1. X = 42
delegate, case 3. X = 42
funcion, case 5. X = 42
lambda, case 7. X = 42
===
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)?
Thanks,
-gordon
More information about the Digitalmars-d
mailing list