Количество аргументов для индивидуально настраиваемых методов индексирования
n = numArgumentsFromSubscript(obj,s,indexingContext)
возвращает количество ожидаемых входных параметров к 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
с varargout
вывод, чтобы позволить MATLAB вызвать этот метод с конкретным количеством выходных аргументов.
function varargout = subsref(obj,s) ... end
Перегрузка numArgumentsFromSubscript
вместо numel
, чтобы управлять результатами перегруженного subsref
и subsasgn
. Перегрузка numArgumentsFromSubscript
может избежать ошибок, вызванных путем перегрузки numel
.