2
我使用16a。我發現重載subsref會調用一個對象call()。我不確定這是否是subsref的正確使用。例如,如何在MATLAB中使用subsref
classdef A < handle
methods
function obj = A(varargin)
end
function v = subsref(obj, S) %#ok<STOUT,INUSD>
assert(false);
end
function c = foo(obj) %#ok<MANU>
c = 1;
end
end
end
然後,我神使用foo時出現以下錯誤。
>> a = A()
a =
A with no properties.
>> a.foo()
Error using A/subsref (line 6)
Assertion failed.
8 assert(false);
如果我刪除subsref,它工作正常。在
http://www.mathworks.com/help/matlab/ref/subsref.html
的subsref方面被稱爲僅當A {I},A(i)或A.field。既然foo是一種方法,爲什麼subsref仍然被調用?
用戶可以實現像container.Map這樣的數據結構嗎?它有A(i)和A(i)=,還有A.length(),A.isKey(),... –
@JoeC是的。你必須檢查輸入到'subsref'來確定它是方法調用還是屬性訪問 – Suever