digitalmars.D.learn - Initializing global delegate variable - bug or on purpose?
- Atila Neves (8/8) Mar 25 2016 int delegate(int) dg = (i) => i * 2;
- data pulverizer (14/22) Mar 25 2016 Hmm, looks like your first delegate is a function type and the
- data pulverizer (3/33) Mar 25 2016 In fact for the second case I'd probably need to see a working
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
Mar 25 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? AtilaHmm, 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.
Mar 25 2016
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:In fact for the second case I'd probably need to see a working struct/class prototype to make a firm comment on it.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? AtilaHmm, 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.
Mar 25 2016