Количество аргументов для индивидуально настраиваемых методов индексирования
возвращает количество ожидаемых входных параметров к 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
.