www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - ElementType of MapResult is a delegate??

reply Yuxuan Shui <yshuiv7 gmail.com> writes:
This surprised me A LOT:

https://d.godbolt.org/z/82a_GZ

So if I call something.map!().array, I get an array of delegates? 
That makes no sense to me.
Dec 08 2018
parent reply John Chapman <johnch_atms hotmail.com> writes:
On Saturday, 8 December 2018 at 13:02:00 UTC, Yuxuan Shui wrote:
 This surprised me A LOT:

 https://d.godbolt.org/z/82a_GZ

 So if I call something.map!().array, I get an array of 
 delegates? That makes no sense to me.
But in your example, "(a) =>" returns "{return tmp;}", which is a delegate. Just write "(a) => tmp", or invoke the delegate by turning it into a call: "{return tmp;}()".
Dec 08 2018
parent Steven Schveighoffer <schveiguy gmail.com> writes:
On 12/8/18 8:19 AM, John Chapman wrote:
 On Saturday, 8 December 2018 at 13:02:00 UTC, Yuxuan Shui wrote:
 This surprised me A LOT:

 https://d.godbolt.org/z/82a_GZ

 So if I call something.map!().array, I get an array of delegates? That 
 makes no sense to me.
But in your example, "(a) =>" returns "{return tmp;}", which is a delegate. Just write "(a) => tmp", or invoke the delegate by turning it into a call: "{return tmp;}()".
This is exactly why (a) => {return tmp;} should not compile. Almost everyone has made that mistake. -Steve
Dec 09 2018