具有可变长度参数列表的匿名函数

时间:2013-01-30 21:56:43

标签: matlab anonymous-function

我可以创建一个接受可变数量参数的匿名函数吗?

我有一个带有某个字段的结构数组S,比如bar,我希望将所有bar值传递给我的匿名函数foo。由于struct S中的元素数量未知,foo必须能够接受可变数量的参数。

我能够提出的最接近的事情是将一个单元格数组作为输入参数列表:

foo({arg1, arg2, arg3, ...})

我正在用foo({S.bar})调用它,但它看起来很尴尬。

为此创建一个特殊的m文件似乎有点矫枉过正。还有其他想法吗?

2 个答案:

答案 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)

    在matlab中名为varargin
  • va_arg这里是链接的内容 :
  

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