我想使用自定义枚举类的显示matlab.mixin.CustomDisplay
.
如果我有一个常规(非枚举)类,如下所示:
classdef test < handle & matlab.mixin.CustomDisplay
properties
value
end
methods
function obj = test(value)
obj.value = value;
end
end
methods (Access = protected)
function displayScalarObject(obj)
disp(['hello ', num2str(obj.value)])
end
end
end
然后一切正常 - 例如,
>> a = test(1)
a =
hello 1
但是如果我有一个如下所示的枚举类(请注意添加enumeration
block):
classdef test < handle & matlab.mixin.CustomDisplay
properties
value
end
methods
function obj = test(value)
obj.value = value;
end
end
methods (Access = protected)
function displayScalarObject(obj)
disp(['hello ', num2str(obj.value)])
end
end
enumeration
enum1(1)
end
end
那么显示不是定制的 - 例如,
>> a = test.enum1
a =
enum1
使用调试器,我可以看到我的displayScalarObject
方法从未被调用。实施其他方法matlab.mixin.CustomDisplay
例如displayNonScalarObject
等等似乎没有帮助 - 这些也永远不会被调用。
这是怎么回事?做disp
and display
枚举类的工作方式不同,因此任何被覆盖的东西matlab.mixin.CustomDisplay
只是被忽略?
有没有办法获得定制的显示matlab.mixin.CustomDisplay
,但是使用枚举类?
PS我可以直接超载disp
and/or display
在不继承自的枚举类上matlab.mixin.CustomDisplay
,这工作得很好。但我想用matlab.mixin.CustomDisplay
如果可能的话。