On Saturday, 19 October 2013 at 17:17:47 UTC, aldanor wrote:
On Saturday, 19 October 2013 at 16:56:50 UTC, John Colvin wrote:
On Saturday, 19 October 2013 at 16:33:11 UTC, aldanor wrote:
I was wondering if it was possible to call D functions by their names (strings that are not known at compile time) and couldn't find the answer anywhere in the documentation. Kinda like we can instantiate objects with Object.factory, would it be possible to somehow do the same with module-level functions? Or maybe with non-static class methods?

You could make an associative array of function pointers with strings as keys. Probably not the best solution but it should work.

Thanks for the reply, this is something I thought about of course. But what if I have hundreds of functions to dispatch to? The current (C) implementation does exactly that, autogenerates a sort of an associative array, but that's very ugly and requires an extra preprocessing step.

I was thinking runtime reflections can help do this, but I'm not quite sure where to start (and there is also the performance question).

No matter what happens, if you want to take a runtime string and work out what function it corresponds to then you're going to have to use some sort of string matching.

Unless you have a very specific function name format then a hash is probably the fastest way to do this, especially in the case of hundreds of functions.

D's compile-time reflection could probably make building the associative array neat and easy.

Reply via email to