- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在为我的 classA 创建一个通用的 subsref,它有一个属性 attrA,它是一个 classB 实例。到目前为止,它的工作,它让我做的事情,如
x = objA.attr1.methB(),
这正是我最初想要做的事情。
function this = Class1(varargin)
this.attrA = ClassB()
this = class(this,'ClassA')
function this = ClassB()
this.AttrB1 = 'valueB1'
this.AttrB2 = 'valueB2'
function out = methB
out = this.AttrB2
我遇到的问题是:当在我的 subsref 中执行对方法的调用时,我这样做(检测它是一个方法等之前完成):
methName = index(1).subs;
args = index(2).subs;
if iscell(args)
varargout = {feval(methName,this,args{:})};
else
varargout = {feval(methName,this,args)};
end %end if iscell
问题是,当 methName 方法支持可变数量的输出时,此 varargout 不等同于 [x,y,...](应该在调用 subsref 时分配输出数量,因此 methName 总是返回单个输出,这并不总是我想要的(几乎,但不总是)。
我如何让 methName 知道我想要多少输出? (我不想将 N 作为参数传递)。
我正在考虑创建一个字符串 str='[out1,out2,out3...]'
然后做类似的事情
eval([
str ...
'= {feval(methName,this,args{:})};'...
])
但我一直认为必须有一种更优雅的方式来做到这一点。
最佳答案
如果您期望的输出数量取决于您的 subsref 请求的输出参数,您可以像这样简单地使用 nargout
:
[varargout{1:nargout}] = feval(methName,this,args{:});
关于matlab - 分配给 varargout 时使用可变数量的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14475831/
我正在为我的 classA 创建一个通用的 subsref,它有一个属性 attrA,它是一个 classB 实例。到目前为止,它的工作,它让我做的事情,如 x = objA.attr1.methB(
小例子: function varargout = wrapper(varargin) varargout = someFunction(varargin); 这就是我首先要做的。但是例如,如果 so
我有一个参数和输出数量可变的函数,如果有额外的参数,我希望它在某个时刻退出: function [out, varargout] = myfunction(a,varargin) % do s
我是一名优秀的程序员,十分优秀!