MATLAB® может использовать объекты в качестве индексов в индексируемых выражениях. Правила индексации массива применяются — индексы должны быть положительными целыми числами. Поэтому MATLAB должен смочь получить значение на объект, который является положительным целым числом для использования в индексируемом выражении.
Индексируемые выражения как X(A)
, где A
объект, причина MATLAB, чтобы вызвать subsindex
функция. Однако, если выражение индексации приводит к вызову перегруженного метода от matlab.mixin.indexing.RedefinesParen
, matlab.mixin.indexing.RedefinesDot
, или matlab.mixin.indexing.RedefinesBrace
заданный классом X
, затем MATLAB не вызывает subsindex
.
Существует несколько способов реализовать индексацию одного объекта другим объектом, X(A)
:
Задайте subsindex
метод в классе A
это преобразует A
до целого числа. MATLAB вызывает A
subsindex
метод, чтобы выполнить операции индексации, когда класс X
не перегружает методы от matlab.mixin.indexing.RedefinesParen
, matlab.mixin.indexing.RedefinesDot
, или matlab.mixin.indexing.RedefinesBrace
.
Если класс X
методы перегрузок от RedefinesParen
, RedefinesDot
, или RedefinesBrace
эти методы могут вызвать subsindex
метод A
явным образом. Класс A
должен реализовать subsindex
метод, который возвращает соответствующее значение.
subsindex
должен возвратить значение объекта как значение индекса нулевого числа с основанием в области значений 0
к prod(size(X))-1
.
Предположим, что вы хотите использовать объект A
индексировать в объект B
B
может быть отдельный объект или массив, в зависимости от проектов класса.
C = B(A);
Вот два примера subsindex
методы. Первое принимает, что можно преобразовать класс A
к a uint8
. Второе принимает класс A
хранит значение индекса в свойстве.
subsindex
метод, реализованный классом A
может преобразовать объект в числовой формат, который будет использоваться в качестве индекса:
function ind = subsindex(obj) ind = uint8(obj); end
Класс obj
реализует uint8
метод, чтобы обеспечить преобразование от объекта до целочисленного значения.
Класс A
реализации subsindex
чтобы возвратить числовое значение, которое хранится в свойстве:
function ind = subsindex(obj) ind = obj.ElementIndex; end
Примечание
subsindex
значения на основе 0, не на основе 1.
matlab.mixin.indexing.RedefinesParen
| matlab.mixin.indexing.RedefinesDot
| matlab.mixin.indexing.RedefinesBrace