列挙型のように機能する独自のクラスを作成しました。メソッドdisp()をオーバーライドしたので、その型を含む変数がコマンドウィンドウに表示されると、意味のあるもの(具体的には、その列挙値の名前)が表示されます。
classdef MyEnumeratedType
properties(Constant)
ENUMVAL1 = MyEnumeratedType(1, 'ENUMVAl1');
ENUMVAL2 = MyEnumeratedType(2, 'ENUMVAL2');
ENUMVAL3 = MyEnumeratedType(3, 'ENUMVAL3');
end
properties(Access=private)
ordinal
name
end
methods(Access=private)
function this = MyEnumeratedType(ord, name)
this.ordinal = ord;
this.name = name;
end
end
methods
function disp( this )
disp(this.name);
end
end
end
したがって、コマンドウィンドウで変数に割り当てると、目的の出力が得られます。
>> x = MyEnumeratedType.ENUMVAL2
x =
ENUMVAL2
ここまでは順調ですね。しかし、タイプMyEnumeratedTypeの値を構造体のフィールドに割り当てると、その構造体の表示には値が表示されず、タイプMyEnumeratedTypeの値があることが示されるだけです。
>> mystruct.field1 = 42
mystruct =
field1: 42
>> mystruct.field2 = MyEnumeratedType.ENUMVAL3
mystruct =
field1: 42
field2: [1x1 MyEnumeratedType]
field1のdouble値の場合と同じように、field2の値を表示するにはどうすればよいですか?