2012-08-24 49 views
4

我有一個對象,Person p;。下列性質是p的屬性:將對象轉換爲字符串的Matlab方法

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

JobType是從含有JobTypes的枚舉JobTypes類的對象。我想看JobType: Manager而不是JobType: [1x1 JobTypes]。有什麼想法嗎?

回答

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將顯示實際字符串! (對此@Kagos to @zagy)

看看Mathworks如何實現他們自己類的display方法,以瞭解如何獲得指向超類,方法,事件等的鏈接顯示器。

+1

我相信可以使用'JobTypes.char'屬性來返回適當的字符串,而不是使用'switch'。 – Sait

+0

@zagy你是完全正確的。讓我編輯它。 –

2

您需要覆蓋您的課程的display(obj)disp(obj)方法來實現此目的。

也許這兩個頁面幫助:12