По умолчанию количество значений, на которые ссылается операция индексации, определяет, сколько выходных аргументов 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
настроить индексацию для вашего класса.