如何在MATLAB中获取枚举的名称

时间:2010-02-22 17:33:15

标签: matlab oop enums

我在MATLAB中定义了一个枚举类型

classdef(Enumeration) Color < Simulink.IntEnumType
  enumeration
    RED(0),
    GREEN(1),
    BLUE(2),
  end
end

我可以指定它:

>> x = Color.RED    
x = 
    RED

我可以这样显示:

>> disp(x)
    RED

或者像这样

>> x.display()
x =
    RED

如何以字符串形式访问该名称(“RED”)?

换句话说,我正在寻找类似的东西:

s = x.toString()

s = tostring(x)

这两个都不起作用。

2 个答案:

答案 0 :(得分:8)

您可以使用:

» str = char(Color.RED)
str =
RED
» class(str)
ans =
char

您甚至可以覆盖默认行为:

classdef(Enumeration) Color < int32
 enumeration
  RED(0)
  GREEN(1)
  BLUE(2)
 end

 methods
  function s = char(obj)
   s = ['Color ' num2str(obj)];
   %# or use a switch statement..
  end

  function disp(obj)
   disp( char(obj) )
  end
 end
end

现在:

» char(Color.BLUE)
ans =
Color 2

答案 1 :(得分:0)

一种不同的通用呼叫方式:

strtrim(matlab.unittest.diagnostics.ConstraintDiagnostic.getDisplayableString(Color.BLUE))

这样,您可以保存disp()和/或char()的类特定的实现。