这两个调用序列 get(a)和a.get()有什么区别?
load gong
a = audioplayer(y, Fs);
a.get
get(a)
答案 0 :(得分:1)
默认情况下,没有区别。但是,该行为可以修改。
默认情况下,对于自定义类的对象,obj.method(arg1,arg2,...)
是method(obj,arg1,arg2,...)
的语法糖。这意味着当您编写前者时,MATLAB会假装您编写了后者,然后进行相应的处理。
但是,可以为类重载方法subsref
,在这种情况下,将为语法obj.method(arg1,arg2,...)
调用此函数。也就是说,MATLAB将其解释为索引操作(.method
),然后是另一个索引操作((arg1,arg2,...)
)。调用subsref
方法以评估这些索引操作。可以实现这种方式,以便在这种情况下调用适当的方法,但是对其他索引操作(例如obj(x)
或obj{x}
)执行自定义索引代码。例如,请参见here。