私はオブジェクトを持っていますPerson p;。次のプロパティはpのプロパティです。
Properties:
PersonName: 'John Doe'
JobType: [1x1 JobTypes]
JobType は、JobTypesJobType の列挙を含むクラスのオブジェクトです。JobType: Manager代わりに見たいJobType: [1x1 JobTypes]。何かご意見は?
私はオブジェクトを持っていますPerson p;。次のプロパティはpのプロパティです。
Properties:
PersonName: 'John Doe'
JobType: [1x1 JobTypes]
JobType は、JobTypesJobType の列挙を含むクラスのオブジェクトです。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.chartoString列挙型クラスの Matlab のバージョンであるため、これを挿入するとfprintf実際の文字列が表示されます! (これについて@zagyに称賛)
Mathworks がdisplay独自のクラスのいくつかのメソッドをどのように実装したかを見て、ディスプレイでスーパークラス、メソッド、イベントなどへのリンクを取得する方法を感じてください。