По умолчанию количество значений, на которые ссылается операция индексирования, определяет количество выходных аргументов, используемых MATLAB ® для вызоваsubsref. Аналогично, количество значений, назначаемых в индексированной операции назначения, определяет количество входных аргументов, используемых MATLAB для вызова subsasgn.
Если конструкция класса требует, чтобы операции индексирования возвращали или назначали другое количество значений, отличное от числа, определенного операцией индексирования, используйте numArgumentsFromSubscript для указания требуемого номера. numArgumentsFromSubscript обеспечивает контроль над nargout для subsref и nargin для subsasgn.
Если класс использует numArgumentsFromSubscript, реализовать subsref и subsasgn для определения фактических значений, возвращенных или назначенных операциями индексирования.
Перед R2015b выпуска 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 для настройки индексации для класса.