On Saturday, 23 December 2017 at 08:57:18 UTC, kerdemdemir wrote:
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.
it totally depends on the type of resulting element. if you
expect Base[], then your map should transform your range / array
elements into a Base.
import std.range, std.algorithm;
auto a = iota(1, 10);
int[] b = a.map!(el => el + 1).array;
int[][] c = a.map!(el => [el, el + 1]).array;
writeln(b);
writeln(c);