私は16aを使用します。オーバーロードsubsrefがオブジェクト呼び出し()への関数呼び出しを行うのを発見しました。これが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);
サブリファレンスを削除した場合、正常に動作します。
http://www.mathworks.com/help/matlab/ref/subsref.html
のsubsrefの観点から呼び出されたときにのみ、{I}、A(i)またはA.field。 fooはメソッドなので、subsrefはまだ呼び出されているのはなぜですか? MATLABに、A.field
とA.method
両方ドット参照を使用し、したがって、subsref
によって処理されるため
ユーザーはcontainers.Mapのようなデータ構造を実装できますか? A.length()、A.isKey()、... –
@JoeCはい。これはA(i)とA(i)入力が 'subsref'をチェックして、それがメソッド呼び出しかプロパティアクセスかを判断する必要があります – Suever