如何在MATLAB中处理方法(obj)?

时间:2013-03-04 22:47:24

标签: matlab

现在,据我所知,调用obj.methodmethod(obj)似乎会给出相同的结果。但是,当我试图了解subsref在这些情况下的行为时,我开始意识到method(obj)似乎没有通过subsref机制。那么这些调用如何处理,是否有实用的方法来覆盖它们?

我正在尝试这样做,所以我可以使method(object).otherMethod成为可能(我显然会通过自定义subsref来处理)。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

method(obj)实际上只会在method上调用obj函数。 obj.method会经过subsref,然后将其移植到同一个函数中,除非您已实现自己的自定义subsref。我不确定'覆盖'method(obj)是什么意思 - 你不能让MATLAB调度过程以不同的方式工作。

而不是method(obj).otherMethod,您通常会tmp = method(obj); tmp.otherMethod

如果你试图完全重新实现subsref处理任意深度嵌套和复杂表达式的程度 - 例如,可以采用obj.property{1}.structfield(2).method.otherMethod的形式 - 事情变得非常复杂。我通常只会尝试处理一小部分嵌套,然后将更深层次的内容传递给builtin('subsref')