因此,将变量参数列表传递给子函数的相当常见的解决方案是传入:
function out = foo(arg1, arg2, varargin)
% do something
out = foo2(arg1+arg2, varargin{:});
end
其中varargin {:}是以逗号分隔的单元数组解包。
但是当我想将变量参数列表传递给 SUB-subfunction 时,我遇到了问题,例如
function out = foo2(arg1, varargin)
tempOut = foo3(varargin{:});
out = arg1 + tempOut; % Assuming I guarantee nargin >= 2
end
varargin传入foo2:1 x nargin cell
varargin传入foo3:1 x 1单元格,内容:1 x nargin cell
如何正确解压缩以便我可以正确传入foo3? 谢谢!
答案 0 :(得分:0)
我的建议是更改foo2
和foo3
。
如果foo2
是:
function out = foo2(arg1, myvarargin)
%// Now myvarargin is a cell array.
tempOut = foo3(myvarargin);
out = arg1 + tempOut; % Assuming I guarantee nargin >= 2
end
并将其称为
out = foo2(arg1+arg2, varargin);
它会起作用(取决于foo3
的声明)。
这是因为你没有使用"变量参数"在foo2
但你有一个输入是一个单元格数组,可以改变大小。但它总是一个输入。