用于将对象转换为字符串的Matlab方法

时间:2012-08-24 12:27:53

标签: matlab type-conversion

我有一个对象Person p;。以下属性是p的属性:

Properties:
     PersonName: 'John Doe'
     JobType: [1x1 JobTypes]

JobType是来自JobTypes类的对象,其中包含JobTypes的枚举。我希望看到JobType: Manager而不是JobType: [1x1 JobTypes]。有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我从未喜欢Matlab中的枚举课 - 对我的品味太麻烦了。因此,我没有太多经验来真正了解这里发生了什么。 不过,我要尝试:枚举类只有一个值。 不是字符串。像

这样的事情
J = JobTypes.Manager

会将JobTypes类对象分配给变量J,并设置为与Manager关联的值。该值由Matlab的内部选择,永远不会显示给用户。它在命令行上显示为J = Manager的事实,是由于Matlab对枚举类的标准dispdisplay实现。我认为此方法在与另一个类中的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)

您需要覆盖类的display(obj)disp(obj)方法才能实现此目的。

也许这两页有用:12