我正在使用Matlab R2010b,我在C#下有一个枚举:
[Flags()]
public enum MyFormat
{
value1 = 0,
value2 = 1,
value3 = 2,
value4 = 4,
value5 = 8
}
在一个方法中,我有一个参数,格式为:
public void MyMethod(MyFormat format, double number)
{
....
}
然后我使用Matlab,我想使用方法MyMethod。以标准方式,这里是代码:
>>format = MyNamespace.MyFormat.value1;
>>MyNamespace.MyMethod(format, 15);
当我尝试将“多值”作为MyFormat传递时出现问题:
>>format = MyNamespace.MyFormat.value1 | MyNamespace.MyFormat.value2;
>>MyNamespace.MyMethod(format, 15);
我找到了一个简单的解决方案,但需要更新版本的Matlab R2011a。这里找到的另一个解决方案是在Matlab中实现这个功能:
function enum = EnumParse(typename, value)
type = System.Type.GetType(typename);
values = regexp(value, ', ', 'split');
enum = cell(1, length(values));
for i = 1:length(values)
enum{i} = System.Enum.Parse(type, values{i});
end
end
但是,System.Type.GetType('MyNamespace.MyFormat')行返回一个空值,而它不是null,例如System.Type.GetType('System.String')类型。
我的问题是如何解析枚举的多个值? 谢谢!
答案 0 :(得分:0)
MatLab,因为它的Enum.Parse会带来任何多重载荷 类型,价值,价值......?