我有一个对象Person p;
。以下属性是p
的属性:
Properties:
PersonName: 'John Doe'
JobType: [1x1 JobTypes]
JobType是来自JobTypes
类的对象,其中包含JobTypes的枚举。我希望看到JobType: Manager
而不是JobType: [1x1 JobTypes]
。有什么想法吗?
答案 0 :(得分:4)
我从未喜欢Matlab中的枚举课 - 对我的品味太麻烦了。因此,我没有太多经验来真正了解这里发生了什么。 不过,我要尝试:枚举类只有一个值。 不是字符串。像
这样的事情J = JobTypes.Manager
会将JobTypes
类对象分配给变量J
,并设置为与Manager
关联的值。该值由Matlab的内部选择,永远不会显示给用户。它在命令行上显示为J = Manager
的事实,是由于Matlab对枚举类的标准disp
和display
实现。我认为此方法在与另一个类中的display
调用相结合时无法正常工作。
为了避免这种情况,您可以为display
定义自己的Person
方法:
classdef Person < handle
properties
PersonName = 'John Doe'
JobType = JobTypes.Manager
end
methods
function display(self)
fprintf(...
['Properties:\n',...
' Personname: ''%s''\n',...
' JobType: %s\n'],...
self.PersonName,...
self.JobType.char);
end
end
end
JobType.char
是Matlab的枚举类toString
的版本,因此将其插入fprintf
将显示实际的字符串! (感谢@zagy)
看看Mathworks如何实现他们自己的某些类的display
方法,以了解如何在显示中获取超类,方法,事件等的链接。
答案 1 :(得分:2)