如何在工作区显示自定义属性
57视图(30天)
显示旧的评论
当我们有能力使用subsref定义定制行为类/ subsassing或redefinesDpt / RedefinesParen /……我们可以创建类,像比他们有更多的属性。
使用dynamicprops子类是超级慢当添加新属性,使他们在一个结构非常快。有很多选项覆盖显示在控制台中。但是我还没有找到一种方法,将这些定制行为属性添加到工作区中。
你会如何定制的属性显示在工作区/变量窗口吗?我试图覆盖的属性方法,试图从customDisplay继承和许多其他的事情。
谢谢
看来我想定制:
redefinesDot代码:
classdefDynPropHelper < matlab.miin.indexing。RedefinesDot &处理
属性(访问=私人)
AddedFields结构体=结构;
结束
方法(访问=保护)% redefinesDot mixin
函数varargout = dotReference (obj indexOp)
如果isfield (obj。AddedFields,在dexOp(1).Name)
temp = obj.AddedFields。(indexOp (1);
其他的
把(MException (“MATLAB: noSuchMethodOrField”,没有属性或方法叫%年代存在于这个对象的,indexOp (1) . name));
结束
如果~ isscalar (indexOp)
[varargout {1: nargout}] = temp。(indexOp(2:结束);
其他的
[varargout {1: nargout}] = temp;
结束
结束
函数obj = dotAssign (obj, indexOp变长度输入宗量)
如果~ isfield (obj。AddedFields,在dexOp(1).Name)
%这允许创建连锁标记+通常我们所说的
%函数做检查/元数据采集等…
obj.AddedFields。(indexOp (1) . name) = [];
结束
如果isscalar (indexOp)
obj.AddedFields。(indexOp (1) . name) =变长度输入宗量{1};
其他的
%我知道,这应该做DotReference检查一样,
%我简化事情
obj.AddedFields。(indexOp) =变长度输入宗量{:};
结束
结束
函数n = dotListLength (obj indexOp indexContext)
n = listLength (obj.AddedFields indexOp indexContext);
结束
结束
结束
答案(1)
Vinayak古普塔
2023年6月1日11:42
嘿,托马斯
创建的属性是私有的,它
不会
可以显示自定义属性
,但我们可以通过自定义显示为文本列表中显示它们。
%从3超类继承的类
classdefDynPropHelper < matlab.mixin.indexing。RedefinesDot &处理& matlab.mixin.CustomDisplay
之后添加一个
自定义显示的保护方法。
方法(访问=保护)
函数displayScalarObject (obj)
disp (obj.AddedFields);
结束
结束
这应该显示
在
变量视图
作为
如果你想要添加的功能
可用的字段,而不是文本。你可以考虑做
作为
(
SetAcces
年代
=
私人的,
GetAcces
年代
=公共)
请参考
以下了解更多
CustomDispla
y
: