2012-07-12 8 views
5

Mam wyliczający:String na wyliczenie

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 

i mam ciąg znaków:

currentCommand = 'PositionMode'; 

Chcę być w stanie powrócić:

Commands.PositionMode 

Czy istnieje lepszy rozwiązanie niż

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

Odpowiedz

5

Podobnie jak w przypadku struktur, można używać obiektów z obiektami dynamic field names.

Z

currentCommand = PositionMode 

połączeń

Commands.(currentCommand) 

ocenia się

Commands.PositionMode 

a zatem rozwiązuje problem w elegancki i wygodny sposób.