How do I remove a dynamic property from a class?
13 次查看(过去 30 天)
显示 更早的评论
MathWorks Support Team
2018-4-23
回答: MathWorks Support Team
2018-4-23
I have a class "A" that has a property called "Sigs" of class "B". Class "B" inherits from "dynamicprops" and the constructor for "A" populates "Sigs" with a bunch of dynamic properties that are of class "C". I want to be able to delete those properties from "Sigs". How do I do that?
采纳的回答
MathWorks Support Team
2018-4-23
In order to remove a dynamic property, save the "meta.DynamicProperty" object that is returned by "addprop" and then use the "delete" function of that object.
In order to save the "meta.DynamicProperty" objects, create a struct "sig_meta" that maps from the property name to the "meta.DynamicProperty" object. This was a property of the "A" class.
If you want to hide the "sig_meta" from the property list of your "A" class, use "Hidden=true". This allows you to still use the property, but it will not clutter your Command Window outputs.
Finally, in order to delete the dynamic property, use "delete" on the field of the struct "sig_meta" in your "A" class. Then, call "rmfield" to keep the struct and the "B" class properties in sync.
An example is attached.
To play with this example, execute
>> obj = A;
>> obj.Sigs
>> obj.sig_meta
>> delete(obj.sig_meta.prop10);
>> obj.Sigs
>> obj.sig_meta
>> obj.sig_meta = rmfield(obj.sig_meta,'prop10')
>> obj.sig_meta;
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!