问题
I'd like to customize the display of an enumeration class using matlab.mixin.CustomDisplay
.
If I have a regular (non-enumeration) class such as the following:
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
then everything works fine - for example,
>> a = test(1)
a =
hello 1
But if I have an enumeration class such as the following (note the addition of the 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
then the display is not customized - for example,
>> a = test.enum1
a =
enum1
Using the debugger, I can see that my displayScalarObject
method is never called. Implementing other methods of matlab.mixin.CustomDisplay
such as displayNonScalarObject
and so on doesn't seem to help - these never get called either.
What's going on? Do disp
and display
work differently for enumeration classes, in such a way that anything that's overridden by matlab.mixin.CustomDisplay
just gets ignored?
Is there a way to get a customized display with matlab.mixin.CustomDisplay
, but using an enumeration class?
PS I am able to directly overload disp
and/or display
on an enumeration class that does not inherit from matlab.mixin.CustomDisplay
, and this works fine. But I'm looking to use matlab.mixin.CustomDisplay
if possible.
回答1:
I'll answer my own question in case anyone else is interested.
The question was asked with reference to MATLAB R2014a. In R2014b, an additional note has been added to the documentation for matlab.mixin.CustomDisplay
, making it explicit that it is not possible to use matlab.mixin.CustomDisplay
to derive a custom display for enumeration classes, and suggesting that the best approach is to overload disp
.
来源:https://stackoverflow.com/questions/24703121/customize-display-of-an-enumeration-class