Calling arbitrary functions at runtime?
ketmar via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sun Dec 11 14:25:39 PST 2016
import std.traits;
import std.stdio;
alias FDg = void delegate (string args);
FDg[string] cmdlist;
void register(DG) (string name, DG dg) if (isCallable!DG) {
cmdlist[name] = delegate (string args) {
import std.array : split;
import std.conv : to;
alias Args = Parameters!DG;
auto spx = args.split(' ');
Args ara;
foreach (immutable idx, ref a; ara) {
a = spx[idx].to!(typeof(a));
}
dg(ara);
};
}
void main () {
register("test", (int a, bool b) { writeln("a=", a, "; b=", b);
});
cmdlist["test"]("42 true");
}
More information about the Digitalmars-d-learn
mailing list