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