Три класса 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