Initializing global delegate variable - bug or on purpose?

data pulverizer via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Mar 25 16:40:37 PDT 2016


On Friday, 25 March 2016 at 20:54:28 UTC, Atila Neves wrote:
> int delegate(int) dg = (i) => i * 2;
>
> Error: non-constant nested delegate literal expression __lambda3
>
>
> int delegate(int) dg;
>
> static this() {
>    dg = i => i * 2; // ok
> }
>
>
> Am I doing anything wrong?
>
> Atila

Hmm, looks like your first delegate is a function type and the 
second is a function instance. So the first version written like 
this ...

import std.stdio;

alias dg = int delegate(int);

dg make_dg(){
	return i => i*2;
}

void main(){
	auto my_dg = make_dg();
	writeln(my_dg(3));
}

will work.


More information about the Digitalmars-d-learn mailing list