По умолчанию количество значений, на которые ссылается операция индексации, определяет, сколько выходных аргументов MATLAB® используется для вызова subsref
. Точно так же количество значений для назначения в операции индексированного назначения определяет, сколько входные параметры используют MATLAB для вызова subsasgn
.
Если проект вашего класса требует, чтобы операции индексации возвращали или назначали другое количество значений, чем число, заданное операцией индексации, используйте numArgumentsFromSubscript
для определения необходимого номера. numArgumentsFromSubscript
обеспечивает контроль над nargout
для subsref
и nargin
для subsasgn
.
Если ваш класс использует numArgumentsFromSubscript
, реализовать subsref
и subsasgn
методы для определения фактических значений, возвращенных или назначенных операциями индексации.
До R2015b релиза MATLAB MATLAB выдавал другие результаты для некоторых выражений индексации, которые возвращаются или присваиваются разделенному списками , разделенными запятыми. Использовать numArgumentsFromSubscript
для поддержки кода, который полагается на поведение предыдущих релизов. Также теперь можно перегрузить numArgumentsFromSubscript
вместо numel
для достижения конкретных результатов без переопределения того, как numel
работает.
Когда класс перегружается numArgumentsFromSubscript
MATLAB вызывает этот метод вместо numel
для вычисления количества аргументов, ожидаемых для subsref
nargout
и subsasgn
nargin
.
Если классы не перегружаются numArgumentsFromSubscript
, вызовы MATLAB numel
для вычисления значений nargout
или nargin
.
Вызовы MATLAB numArgumentsFromSubscript
с тремя входными параметрами:
function n = numArgumentsFromSubscript(obj,s,indexingContext) ... end
Входной параметр | Описание |
---|---|
| Объект, чей |
| Структура индексации, содержащая тип индексации и индексы, используемые в операции |
| Контекст, в котором происходит операция индексации: индексированная ссылка, используемая как оператор, ссылка на индекс, используемая как аргумент функции и индексированное назначение |
MATLAB использует значение, возвращаемое numArgumentsFromSubscript
для индексированной ссылки и назначения. Определите контекст, в котором выполняется операция индексации, проверяя значение indexingContext
в вашей реализации numArgumentsFromSubscript
. Для примера проверьте любой или все возможные контексты индексации.
function n = numArgumentsFromSubscript(obj,~,indexingContext) switch indexingContext case matlab.mixin.util.IndexingContext.Statement n = ...; % nargout for indexed reference used as statement case matlab.mixin.util.IndexingContext.Expression n = ...; % nargout for indexed reference used as function argument case matlab.mixin.util.IndexingContext.Assignment n = ...; % nargin for indexed assignment end end
Для получения дополнительной информации и примеров см. numArgumentsFromSubscript
.
Примечание
Для версий MATLAB R2015b и более поздних релизов, перегрузка numArgumentsFromSubscript
вместо numel
для настройки индексации для вашего класса.