Объекты в индексных выражениях

Объекты как индексы

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 вызывает Asubsindex метод, чтобы выполнить операции индексации, когда класс X не перегружает методы от matlab.mixin.indexing.RedefinesParen, matlab.mixin.indexing.RedefinesDot, или matlab.mixin.indexing.RedefinesBrace.

  • Если класс X методы перегрузок от RedefinesParen, RedefinesDot, или RedefinesBrace эти методы могут вызвать subsindex метод A явным образом. Класс A должен реализовать subsindex метод, который возвращает соответствующее значение.

реализация subsindex

subsindex должен возвратить значение объекта как значение индекса нулевого числа с основанием в области значений 0 к prod(size(X))-1.

Предположим, что вы хотите использовать объект A индексировать в объект BB может быть отдельный объект или массив, в зависимости от проектов класса.

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.

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

| |

Похожие темы