2012-07-12 297 views
5

我有一個枚舉:字符串枚舉

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 

和我有一個字符串:

currentCommand = 'PositionMode'; 

我希望能夠返回:

Commands.PositionMode 

有沒有更好的解決方案比

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

回答

5

與結構一樣,可以將dynamic field names與對象一起使用。

隨着

currentCommand = PositionMode 

通話

Commands.(currentCommand) 

評估爲

Commands.PositionMode 

,從而解決了一個優雅和方便的方式你的問題。