我可以创建一个接受可变数量参数的匿名函数吗?
我有一个带有某个字段的结构数组S
,比如bar
,我希望将所有bar
值传递给我的匿名函数foo
。由于struct S
中的元素数量未知,foo
必须能够接受可变数量的参数。
我能够提出的最接近的事情是将一个单元格数组作为输入参数列表:
foo({arg1, arg2, arg3, ...})
我正在用foo({S.bar})
调用它,但它看起来很尴尬。
为此创建一个特殊的m文件似乎有点矫枉过正。还有其他想法吗?
答案 0 :(得分:9)
使用varargin
作为匿名函数的参数,可以传递可变数量的输入。
例如:
foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
用法
s(1:4) = struct('bar',1);
foo(s.bar)
you provided 4 arguments
答案 1 :(得分:0)
varargin是函数定义语句中的输入变量 允许函数接受任意数量的输入参数。
function varlist(varargin)
fprintf('Number of arguments: %d\n',nargin);
celldisp(varargin)
varlist(ones(3),'some text',pi)
Number of arguments: 3
varargin{1} =
1 1 1
1 1 1
1 1 1
varargin{2} =
some text
varargin{3} =
3.1416