One liner for creating an array filled by a factory method

kerdemdemir kerdemdemir at gmail.com
Sat Dec 23 08:57:18 UTC 2017


On Friday, 22 December 2017 at 23:33:55 UTC, Mengu wrote:
> On Thursday, 21 December 2017 at 21:11:58 UTC, Steven 
> Schveighoffer wrote:
>> On 12/21/17 4:00 PM, kerdemdemir wrote:
>>> I have a case like :
>>> 
>>> http://rextester.com/NFS28102
>>> 
>>> I have a factory method, I am creating some instances given 
>>> some enums.
>>> My question is about :
>>> 
>>> 
>>> void PushIntoVector( BaseEnum[] baseEnumList )
>>> {
>>>      Base[] baseList;
>>>      foreach ( tempEnum; baseEnumList )
>>>      {
>>>         baseList ~= Factory(tempEnum);
>>>      }
>>> }
>>> 
>>> I don't want to use "foreach" loop. Is there any cool std 
>>> function that I can call ?
>>> 
>>> Something like baseEnumList.CoolStdFunc!( a=> Factory(a) 
>>> )(baseList);
>>> 
>>
>> https://dlang.org/phobos/std_algorithm_iteration.html#map
>>
>> -Steve
>
> so basically it becomes:
>
> Base[] baseList = baseEnumList.map!(el => Factory(el));
>
> there's also a parallel version of map [0] if you ever need to 
> map the list concurrently.
>
> [0] https://dlang.org/phobos/std_parallelism.html#.TaskPool.map

Yeah that was very easy and I used to use map for this purposed a 
lot already. I don't know why I get confused. Thanks guys for 
correction. I began to think like map could transform but it 
can't create vector of elements and this confused me.


More information about the Digitalmars-d-learn mailing list