2012-07-12 10 views
5

tengo un enumerador:cadena del recuento

classdef Commands 

    properties 
     commandString; 
     readonly; 
    end 
    methods 
     function obj = Commands(commandString, readonly) 
      obj.commandString = commandString; 
      obj.readonly= readonly; 
     end 
    end 
    enumeration 
     PositionMode('p', false) 
     TravelDistance('s', false) 
    end 
end 

y tengo una cadena:

currentCommand = 'PositionMode'; 

Quiero ser capaz de volver:

Commands.PositionMode 

¿Hay algo mejor solución que

methods(Static) 
    function obj = str2Command(string) 
     obj = eval(['Commands.' string]); 
    end 
end 

Respuesta

5

Al igual que con las estructuras, puede usar dynamic field names con objetos.

Con

currentCommand = PositionMode 

la llamada

Commands.(currentCommand) 

evalúa a

Commands.PositionMode 

y por lo tanto resuelve su problema de una manera elegante y conveniente.

Cuestiones relacionadas