Количество аргументов для индивидуально настраиваемой индексации на основе 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 функция может:
Доступ к операциям индексации и индексам используется в выражении индексации.
Определите, сделана ли операция индексации в контексте ссылочного оператора, выражение передало функции или присвоению.
Если класс перегрузки numArgumentsFromSubscriptMATLAB® вызовы это, чтобы определить количество элементов массива, вовлеченных в операцию индексации, когда число элементов больше того. Например, они '.' индексирующие операции генерируют вызов 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.