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
4

1 に答える 1

5

構造と同様に、動的フィールド名をオブジェクトで使用できます。

currentCommand = PositionMode

呼び出し

Commands.(currentCommand)

に評価されます

Commands.PositionMode

したがって、エレガントで便利な方法で問題を解決します。

于 2012-07-12T11:47:44.817 に答える