文档

修改nargout和nargin的索引方法

何时修改参数个数

默认情况下,索引操作引用的值的数量决定了有多少输出参数MATLAB®使用电话subsref.类似地,在索引赋值操作中要赋值的值的数量决定了MATLAB使用多少输入参数来调用subsasgn

如果类设计要求索引操作返回或分配与索引操作定义的数值不同数量的值,请使用numArgumentsFromSubscript以指定所需的编号。numArgumentsFromSubscript提供控制nargoutsubsref输入参数个数subsasgn

如果你的类使用numArgumentsFromSubscript、实现subsrefsubsasgn方法定义索引操作返回或赋值的实际值。

在MATLAB发布R2015b之前,MATLAB对一些返回或赋值给逗号分隔列表的索引表达式产生了不同的结果。使用numArgumentsFromSubscript支持依金宝app赖于以前版本行为的代码。而且,现在你可以超载了numArgumentsFromSubscript而不是元素个数不需要重新定义如何实现特定的结果元素个数的工作原理。

如何修改参数个数

当类重载时numArgumentsFromSubscript, MATLAB调用此方法代替元素个数来计算预期的参数数量subsrefnargoutsubsasgn输入参数个数

如果类不重载numArgumentsFromSubscript, MATLAB调用元素个数计算…的值nargout输入参数个数

MATLAB调用numArgumentsFromSubscript有三个输入参数:

函数n = numargumentsfrom下标(obj,s,indexingContext)…结束
输入参数 描述

obj

的对象subsrefsubsasgn方法被调用

年代

索引结构,包含操作中使用的索引类型和索引

indexingContext

发生索引操作的上下文:用作语句的索引引用、用作函数参数的索引引用和索引赋值

MATLAB使用返回的值numArgumentsFromSubscript索引引用和赋值。的值确定执行索引操作的上下文indexingContext在实现numArgumentsFromSubscript.例如,测试任何或所有可能的索引上下文。

函数n = numArgumentsFromSubscript (obj, ~, indexingContext)开关indexingContext情况下matlab.mixin.util.IndexingContext.Statement n =...;% nargout用于索引引用语句情况下matlab.mixin.util.IndexingContext.Expression n =...;% nargout用于作为函数参数的索引引用情况下matlab.mixin.util.IndexingContext.Assignment n =...;索引赋值的% nargin结束结束

有关更多信息和示例,请参见numArgumentsFromSubscript

请注意

对于MATLAB版本R2015b和以后的版本,过载numArgumentsFromSubscript而不是元素个数自定义类的索引。

相关的话题