我在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)
这两个都不起作用。
答案 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()的类特定的实现。