12

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

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

我能想到的最接近的事情是将单元数组作为输入参数列表传递:

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

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

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

4

2 回答 2

10

使用varargin匿名函数的参数,您可以传递可变数量的输入。

例如:

foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))

用法

s(1:4) = struct('bar',1);
foo(s.bar)

you provided 4 arguments
于 2013-01-30T21:59:49.257 回答
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
于 2013-01-30T21:59:34.090 回答