Передайте операции индексации

Три класса 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 не доступно.

Смотрите также

| | |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте