Thread overview
dispatch table; symbolic references
Jun 08, 2013
Emil
Jun 08, 2013
bearophile
Jun 10, 2013
Emil
June 08, 2013
need a dispatch table and tried it this way:

class Action {
    string[string] function(string[string] p) action;
    this( string[string] function(string[string] p) action_ref ) {
        this.action = action_ref;
    }
    string[string] execute(string[string] parameters) {
        return this.action(parameters);
    }
}

then

Action[string] dispatch_table = [
    "test1" : new Action(&myapp.index.test),
    "test2" : new Action(&myapp.index.another_test)
];

auto my_first_result = dispatch_table["test1"].execute(["a": "aa", "b":"BB"]);
auto my_second_result = dispatch_table["test2"].execute([" some string key for test2": "in test 2"]);

This works, but I am wondering if there is another way. Does D support symbolic references so I could keep the hashtable in a string[string], or even use a string variable holding a class name to instantiate a class ?

thank you

June 08, 2013
Emil:

> This works, but I am wondering if there is another way. Does D support symbolic references so I could keep the hashtable in a string[string], or even use a string variable holding a class name to instantiate a class ?

There is a create, but I think it's still very limited and I think it needs to be improved:
http://dlang.org/phobos/object.html

Bye,
bearophile
June 10, 2013
did you mean Object.factory() ? It almost does it, but still have to cast the object to the right class (where I can't use a string variable it seems) to use it or make all the classes I want to instantiate this way inherit from the same interface.

thank you bearophile for pointing me in the right direction ... reading object_.d was fun but did not understand everything in there and will have to postpone ambitious stuff until I finish reading the book.



On Saturday, 8 June 2013 at 12:46:40 UTC, bearophile wrote:
...
> There is a create, but I think it's still very limited and I think it needs to be improved:
> http://dlang.org/phobos/object.html
>
> Bye,
> bearophile