По умолчанию количество значений, на которые ссылается операция индексации, определяет сколько выходных аргументов использование MATLAB®, чтобы вызвать subsref
. Точно так же количество значений, чтобы присвоить в индексируемой операции присвоения определяет сколько входных параметров использование MATLAB, чтобы вызвать subsasgn
.
Если ваш проект класса требует, чтобы индексирующие операции возвратили или присвоили различный номер значений, чем номер, заданный операцией индексации, используйте numArgumentsFromSubscript
, чтобы задать необходимый номер. numArgumentsFromSubscript
обеспечивает управление nargout
для subsref
и nargin
для subsasgn
.
Если ваш класс использует numArgumentsFromSubscript
, реализацию subsref
и методы subsasgn
, чтобы задать фактические значения, возвращенные или присвоенные путем индексации операций.
Перед релизом R2015b MATLAB MATLAB привел к различным результатам для некоторых выражений индексации, которые возвращают или присваивают списку, разделенному запятыми. Используйте numArgumentsFromSubscript
, чтобы поддержать код, который полагается на поведение предыдущих релизов. Кроме того, теперь можно перегрузить numArgumentsFromSubscript
вместо numel
, чтобы достигнуть определенных результатов, не переопределяя, как numel
работает.
Когда класс перегружает numArgumentsFromSubscript
, MATLAB вызывает этот метод вместо numel
, чтобы вычислить количество аргументов, ожидаемых для subsref
nargout
и subsasgn
nargin
.
Если классы не перегружают numArgumentsFromSubscript
, MATLAB вызывает numel
, чтобы вычислить значения nargout
или nargin
.
MATLAB вызывает numArgumentsFromSubscript
с тремя входными параметрами:
function n = numArgumentsFromSubscript(obj,s,indexingContext) ... end
Входной параметр | Описание |
---|---|
|
Объект, метод |
|
Индексация структурирует, который содержит тип индексации и индексы, используемые в операции |
|
Контекст, в котором происходит операция индексации: индексируемая ссылка используется в качестве оператора, ссылка на указатель, используемая в качестве аргумента функции и индексированного присвоения |
MATLAB использует значение, возвращенное numArgumentsFromSubscript
для индексируемой ссылки и присвоения. Определите контекст, в котором операция индексации выполняется путем тестирования значения indexingContext
в реализации numArgumentsFromSubscript
. Например, протестируйте на любого возможные контексты индексации.
function n = numArgumentsFromSubscript(obj,~,indexingContext) switch indexingContext case matlab.mixin.util.IndexingContext.Statement n = ...; % nargout for indexed reference used as statement case matlab.mixin.util.IndexingContext.Expression n = ...; % nargout for indexed reference used as function argument case matlab.mixin.util.IndexingContext.Assignment n = ...; % nargin for indexed assignment end end
Для получения дополнительной информации и примеры, смотрите numArgumentsFromSubscript
.
Для версии R2015b MATLAB и более поздних релизов, перегрузки numArgumentsFromSubscript
вместо numel
, чтобы настроить индексацию для вашего класса.