我无法理解以下代码段。简单的调用看起来像这样,没有任何分配,否则:
expression1@expression2;
expression2
指的是一个自定义的句柄类。
我已经研究了句柄,但无法从正常示例@(x) x^2;
或f = @sin;
中弄清楚给定的调用结构如何工作,并且无法在线找到类似的示例。
感谢您对该符号可能做的任何帮助。
答案 0 :(得分:6)
在没有上下文的情况下很难确定,但这看起来像是调用超类方法的子类(通常在子类实现中的其他功能之前)...
请参阅文档here。
链接文档中的示例
classdef Sub < Super
methods
function foo(obj)
% preprocessing steps
...
foo@Super(obj);
% postprocessing steps
...
end
end
end
在这种情况下,foo
函数在Super
类中定义,在子类Sub
中实现,并进行扩展(带有预处理和后处理)。 foo@Super(obj)
表示法从子类调用超类方法。
请注意,这与SuperObj.foo(obj)
类似,除了您没有类SuperObj
的实例化对象(Super
)才能进行此调用。而且,由于要扩展/覆盖该函数的超类版本,因此不能像子类实现相同时那样仅调用obj.foo()
-这就是您已经在使用的函数!因此,需要这种不同的表示法。