On Sunday, 12 July 2015 at 21:07:34 UTC, jmh530 wrote:
private template givemeabettername(alias fun)
{
T givemeabettername(T : U[], U)(T x)
if (isArray!(T))
{
return x.map!(a => fun(a)).array;
You don't need the lambda, do you? -> return x.map!fun.array;
}
}
Very cool. I guess I'm still left with the issue that I don't
know how to loop through a bunch of different functions at
compile time, but this is so elegant that it doesn't seem like
that big a deal.
I don't know what exactly you're after, but you can use foreach
on a whatever-they're-called-now tuple (there's been a discussion
about the name which I haven't followed; I mean the kind you get
from a TemplateTupleParameter):
----
void f1() {}
void f2() {}
void callThemAll(functions ...)()
{
foreach(f; functions) /* The loop is unrolled at compile
time. */
{
f();
}
}
void main()
{
callThemAll!(f1, f2)();
}
----
As usual, recursion is an alternative:
----
void callThemAll(functions ...)()
{
static if(functions.length > 0)
{
functions[0]();
callThemAll!(functions[1 .. $])();
}
}
----