On 2018-06-29 18:05:00 +0000, Ali ehreli said:
On 06/29/2018 09:44 AM, Robert M. Münch wrote:
So, how can I write a generic handler that does the iteration, where I
can specify which member function to call?
Passing a lambda or a string mixin:
Hi, that was somehow in my mind but didn't made to get the syntax
clear... Thanks a lot.
import std.stdio;
class C {
void A() {
writeln(__FUNCTION__);
}
void B() {
writeln(__FUNCTION__);
}
}
void handler(alias func)(C[] cs) {
foreach (c; cs) {
func(c);
}
}
Is it possible to make C[] a template type so that I can use different
classes and lambdas?
void handler_2(string func)(C[] cs) {
foreach (c; cs) {
enum expr = "c." ~ func ~ "();";
mixin(expr);
}
}
Ok, the "strange" syntax for me is the handler(alias func) or
handler(string func) ... I'm alway thinkin in lines of a parameter...
which of course doesn't work.
Looking at the D grammer for functions these things should be the
FuncDeclaratorSuffix, is this right? And then, which part does this
fall into?
FuncDeclaratorSuffix:
Parameters MemberFunctionAttributesopt
TemplateParameters Parameters MemberFunctionAttributesop
--
Robert M. Münch
http://www.saphirion.com
smarter | better | faster