Количество аргументов для индивидуально настраиваемой индексации на основе subsref и subsasgn
Эта функция поддержки настроила индексацию для классов та реализация subsref
и subsasgn
. Для классов, созданных в R2021b и позже, рекомендуемый процесс, чтобы настроить индексацию должен наследоваться некоторой комбинации matlab.mixin.indexing.RedefinesParen
, matlab.mixin.indexing.RedefinesDot
, и matlab.mixin.indexing.RedefinesBrace
. Эквивалентная функция для вычисления количества аргументов для этого типа индексации listLength
. Для получения дополнительной информации смотрите, Настраивают Индексирование объектов.
возвращает количество ожидаемых входных параметров к n
= numArgumentsFromSubscript(obj
,s
,indexingContext
)subsasgn
или количество ожидаемых выходных параметров от subsref
.
Перегрузка numArgumentsFromSubscript
описать количество значений, чтобы возвратиться из индексации выражений, которые возвращают или присваивают списку, разделенному запятыми. Таким образом, индексируя выражения тот конец в '{}'
или '.'
индексация. numArgumentsFromSubscript
функция может:
Доступ к операциям индексации и индексам используется в выражении индексации.
Определите, сделана ли операция индексации в контексте ссылочного оператора, выражение передало функции или присвоению.
Если класс перегрузки numArgumentsFromSubscript
MATLAB® вызовы это, чтобы определить количество элементов массива, вовлеченных в операцию индексации, когда число элементов больше того. Например, они '.'
индексирующие операции генерируют вызов numArgumentsFromSubscript
:
objArray.a
— На число элементов ссылаются в операторе (Statement
)
func(objArray.a)
— Число элементов возвращено в выражении (Expression
)
[objArray.a] = rhs
— Номер значений присвоен со списком, разделенным запятыми (Assignment
)
MATLAB использует контекст вызова, чтобы определить, когда применить значение, возвращенное numArgumentsFromSubscript
. Ваша реализация numArgumentsFromSubscript
может обеспечить различные выходные параметры для трех типов индексации операторов. Например, эта перегрузка numArgumentsFromSubscript
:
Изменяет ожидаемое количество выходных аргументов от subsref
для индексации выражений, которые передаются функциям.
Использует подструктуру индексации s
определить количество аргументов, требуемых операцией индексации
function n = numArgumentsFromSubscript(obj,s,indexingContext) if indexingContext == matlab.mixin.util.IndexingContext.Expression n = 1; else n = length(s(1).subs{:}); end end
Реализуйте subsref
метод с a varargout
выведите, чтобы позволить MATLAB вызвать этот метод с конкретным количеством выходных аргументов.
function varargout = subsref(obj,s) ... end
Перегрузка numArgumentsFromSubscript
вместо numel
управлять результатами перегруженного subsref
и subsasgn
. Перегрузка numArgumentsFromSubscript
может избежать ошибок, вызванных путем перегрузки numel
.