This needs a different approach
    Steven Schveighoffer 
    schveiguy at yahoo.com
       
    Mon Apr 28 08:50:08 PDT 2008
    
    
  
"Saaa" <empty at needmail.com> wrote in message 
news:fv4q7a$1nde$1 at digitalmars.com...
>
> I have this piece of code:
>
> enum { APPLE, PEAR .. PLUM}
>
> switch (data.type)
>  {
>   case APPLE:
>   groupModule.appleModule.eat();
>    break;
>   case PEAR:
>   groupModule.pearModule.eat();
>    break;
> ..
> ..
>   case PLUM:
>   groupModule.plumModule.eat();
>    break;
>   default:
>    break;
>  }
>
> As the function is always the same I'd rather see a lookup iso an 
> iteration over all options.. but how?
>
> groupModule.(data.type).eat();
>
> Something like this is both faster and a lot less to code :)
>
Not sure if this works, but what you probably want is a function table:
auto functionArray = [APPLE:&groupModule.appleModule.eat, 
PEAR:&groupModule.pearModule.eat, .., PLUM:&groupModule.plumModule.eat];
functionArray[data.type]();
Another option is to store your modules in the groupModule in an array and 
just get a common interface returned via a function get:
groupModule.get(data.type).eat();
-Steve
    
    
More information about the Digitalmars-d-learn
mailing list