我正在编写一个 matlab 类,并且想覆盖
subasgn
运算符来实现此目的
obj.('elem1').('subelem1').('subsubelem1')=val;
深度可能会有所不同。标准
struct
支持这种类型的多级分配(但 containers.Map
或 dictionary
不支持)。
从下面的链接中,我找到了仅针对 1 个子字段级别编写
subsasgn
的示例,但它不像 struct 那样支持多个级别
https://www.mathworks.com/help/matlab/matlab_oop/code-patterns-for-subsref-and-subsasgn-methods.html
我想知道是否有人可以提供一些关于如何实现这一目标的指示?
谢谢
如果您使用的是 MATLAB >= R2021b,那么最好的选择是使用
subasgn
,而不是像过去糟糕的日子里那样乱用 RedefinesDot
。这里有一个全面的示例 https://uk.mathworks.com/help/matlab/ref/matlab.mixin.indexing.redefinesdot-class.html .
您仍然需要做更多的工作,因为像这样的多级分配将为您提供
indexOp
的向量 - 但它比使用 subasgn
容易得多。