如何在工作区显示自定义属性

57视图(30天)
托马斯•
托马斯• 2023年5月11日
评论道: 托马斯•2023年6月6日8
当我们有能力使用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);
结束
结束
结束
2的评论
托马斯•
托马斯• 2023年5月12日在33
今天晚些时候将会更新我的问题吗

登录置评。

答案(1)

Vinayak古普塔
Vinayak古普塔 2023年6月1日11:42
嘿,托马斯
创建的属性是私有的,它 不会 可以显示自定义属性 ,但我们可以通过自定义显示为文本列表中显示它们。
%从3超类继承的类
classdefDynPropHelper < matlab.mixin.indexing。RedefinesDot &处理& matlab.mixin.CustomDisplay
之后添加一个 自定义显示的保护方法。
方法(访问=保护)
函数displayScalarObject (obj)
disp (obj.AddedFields);
结束
结束
这应该显示 变量视图 作为
如果你想要添加的功能 可用的字段,而不是文本。你可以考虑做 作为 ( SetAcces 年代 = 私人的, GetAcces 年代 =公共)
请参考 以下了解更多 CustomDispla y :
2的评论
托马斯•
托马斯• 2023年6月6日8
如果仅仅是为了显示对象来援助发展的状态,那么它会更逻辑也显示私人/保护属性。它只显示公共属性表明,意味着用户的代码,而不是核心开发人员,因此它应该是可定制的。现在是在一个地狱中间帧目标群体

登录置评。

类别

找到更多的在定制对象显示为类帮助中心文件交换

s manbetx 845


释放

R2023a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!