我在MATLAB中定义了一个枚举类型
classdef(Enumeration) Color < Simulink.IntEnumType
enumeration
RED(0),
GREEN(1),
BLUE(2),
end
end
Run Code Online (Sandbox Code Playgroud)
我可以指定它:
>> x = Color.RED
x =
RED
Run Code Online (Sandbox Code Playgroud)
我可以这样显示:
>> disp(x)
RED
Run Code Online (Sandbox Code Playgroud)
或者像这样
>> x.display()
x =
RED
Run Code Online (Sandbox Code Playgroud)
如何以字符串形式访问该名称("RED")?
换句话说,我正在寻找类似的东西:
s = x.toString()
Run Code Online (Sandbox Code Playgroud)
要么
s = tostring(x)
Run Code Online (Sandbox Code Playgroud)
两者都不起作用.
您可以使用:
» str = char(Color.RED)
str =
RED
» class(str)
ans =
char
Run Code Online (Sandbox Code Playgroud)
您甚至可以覆盖默认行为:
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
Run Code Online (Sandbox Code Playgroud)
现在:
» char(Color.BLUE)
ans =
Color 2
Run Code Online (Sandbox Code Playgroud)