Количество аргументов для настроенных методов индексирования
возвращает количество ожидаемых входов в n
= numArgumentsFromSubscript(obj
,s
,indexingContext
)subsasgn
или количество ожидаемых выходов subsref
.
Перегрузка numArgumentsFromSubscript
для описания количества значений, возвращаемых из выражений индексации, которые возвращаются или присваиваются разделенному списками , разделенными запятыми. То есть индексация выражений, которые заканчиваются на '{}'
или '.'
индексация. The 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
.