我有一個對象,Person p;
。下列性質是p
的屬性:將對象轉換爲字符串的Matlab方法
Properties:
PersonName: 'John Doe'
JobType: [1x1 JobTypes]
JobType是從含有JobTypes的枚舉JobTypes
類的對象。我想看JobType: Manager
而不是JobType: [1x1 JobTypes]
。有什麼想法嗎?
我有一個對象,Person p;
。下列性質是p
的屬性:將對象轉換爲字符串的Matlab方法
Properties:
PersonName: 'John Doe'
JobType: [1x1 JobTypes]
JobType是從含有JobTypes的枚舉JobTypes
類的對象。我想看JobType: Manager
而不是JobType: [1x1 JobTypes]
。有什麼想法嗎?
我從來沒有喜歡在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
將顯示實際字符串! (對此@Kagos to @zagy)
看看Mathworks如何實現他們自己類的display
方法,以瞭解如何獲得指向超類,方法,事件等的鏈接顯示器。
我相信可以使用'JobTypes.char'屬性來返回適當的字符串,而不是使用'switch'。 – Sait
@zagy你是完全正確的。讓我編輯它。 –