Documenting copy method for class with overridden copyElement method
5 views (last 30 days)
Show older comments
I have a handle class with properties whose values include objects of the same class. To make deep copies, I inherit from matlab.mixin.Copyable and override copyElement. It works fine, but I can't see how to document the class properly. The command help myClass.copy shows, of course, the inherited documentation, which is misleading as it says that only a shallow copy will be made. A user would have to be quite sophisticated to know that they also needed to read the documentation for myClass.copyElement to figure out that obj.copy will in fact make a deep copy.
If the designers of matlab.mixin.Copyable foresaw this problem, perhaps there's a solution I'm missing. (Presumably there is a reason they don't let me override copy, which would avoid the issue.) Has anyone any suggestions?
0 Comments
Answers (2)
Aiswarya
on 9 Apr 2024
Hi David,
The 'copy' function of matlab.mixin.Copyable takes an array of objects as input, performs 'copyElement' on each object and returns a new array of the same dimensions. It does not recursively copy the handle objects in the property values, unlike deep copy. Infact the default implementation of 'copyElement' also makes shallow copies, but it can be customized to make deep copies as explained in the following documentation: https://www.mathworks.com/help/matlab/matlab_oop/custom-copy-behavior.html#but721f.
The behaviour of deep copy v/s shallow copy is also explained in the following documentation: https://www.mathworks.com/help/matlab/ref/matlab.mixin.copyable-class.html#mw_d0ccde11-6669-4794-8df8-de5b67a591a1
Since the 'copy' function just copies the handles but not the underlying data, it is mentioned that it makes shallow copies. The 'copy' function is meant to provide an interface which subclasses can customize and hence it is a sealed method. However you can add documentation to the 'copyElement' method of your subclass by referring to this documentation: https://www.mathworks.com/help/matlab/matlab_prog/add-help-for-your-program.html
See Also
Categories
Find more on Classification Ensembles in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!