Re: Initializing global delegate variable - bug or on purpose?

2016-03-25 Thread data pulverizer via Digitalmars-d-learn

On Friday, 25 March 2016 at 23:40:37 UTC, data pulverizer wrote:

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.


In fact for the second case I'd probably need to see a working 
struct/class prototype to make a firm comment on it.


Re: Initializing global delegate variable - bug or on purpose?

2016-03-25 Thread data pulverizer via Digitalmars-d-learn

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.