Три класса mixin, которые позволяют настроить операции индексации — matlab.mixin.indexing.RedefinesParen
, matlab.mixin.indexing.RedefinesDot
, и matlab.mixin.indexing.RedefinesBrace
— работайте независимо. Можно реализовать все три операции индексации, но у вас также есть опция только реализации один или два из них. Можно также принять решение настроить всего один или два уровня индексации и передать дополнительные операции другому MATLAB® объект.
Например, это выражение показывает три уровня индексации:
obj(1).prop{7}
Можно принять решение настроить только индексацию круглых скобок путем наследования RedefinesParen
и затем передайте остающиеся операции индексации (точка и фигурная скобка) к поведениям по умолчанию. Этот фрагмент класса наследовался RedefinesParen
:
classdef MyClass < matlab.mixin.indexing.RedefinesParen properties (Access = private) prop end methods (Access = protected) function varargout = parenReference(A,indexOp) idx = indexop(1).Indices; % Handle customized parentheses indexing temp = a.prop(idx); % Foward remaining indexing to temp [varargout{1:nargout}] = temp.(indexOp(2:end)); end end end
Передающий синтаксис является динамическим синтаксисом индексации точки с IndexingOperation
экземпляр:
temp.(indexOp(2:end))
Это выражение обрабатывает все операции индексации после первых круглых скобок. Другими словами, выражение индексации описано indexOp(2:end)
передается temp
. В этом примере, indexOp(2)
и indexOp(3)
точка и операции индексации фигурной скобки, соответственно. temp.(indexOp(2:end))
переводит в:
temp.prop{7}
Для индивидуально настраиваемой точечной индексации передающий синтаксис обеспечивает права доступа от исходного контекста основного выражения индексации. Например, после круглых скобок, индексирующих obj(1).prop{7}
обработан, MATLAB обрабатывает точечную индексацию, temp.prop{7}
, использование того же контекста, что начальное выражение индексации, начатое с. Когда вы вызываете obj(1).prop{7}
в классе, частная собственность prop
доступно. Когда вы вызываете obj(1).prop{7}
за пределами класса, prop
не доступно.
matlab.mixin.indexing.RedefinesParen
| matlab.mixin.indexing.RedefinesDot
| matlab.mixin.indexing.RedefinesBrace
| matlab.indexing.IndexingOperation