emulate with

Simen Kjærås simen.kjaras at gmail.com
Sat Jun 1 10:25:33 UTC 2019


On Friday, 31 May 2019 at 08:35:23 UTC, Simen Kjærås wrote:
> With 1), 2) and 3) fixed, the code would look like this (only 
> changed code included):
>
> unittest {
>     with (Dispatcher.X) {
>         A(1);
>         A("a");
>         B(2);
>         C_Q(3);
>     }
> }
>
> struct Dispatcher {
>     struct opDispatch(string prefix, alias context = 
> __CONTEXT__) {
>         static auto opDispatch(string name, Args...)(Args args) 
> {
>              return getMethod!(context, prefix~"_"~name)(args);
>         }
>     }
> }

Actually, Dispatcher could look like this:

struct Dispatcher {
     struct opDispatch(string prefix, alias context = __CONTEXT__) 
{
         alias opDispatch(string name) = getMethod!(context, 
prefix~"_"~name);
     }
}

--
   Simen


More information about the Digitalmars-d-learn mailing list