匿名函数与一个可变长度的自变量列表(Anonymous function with a variab

2019-08-16 16:23发布

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

我有一个结构阵列S与某一个领域,比如说bar ,我想所有的通bar值到我的匿名函数foo 。 由于在结构元件的数量S是未知的, foo必须能够接受可变数量的参数。

我已经能够拿出被传递一个单元阵列作为输入参数列表最接近的事:

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

而我与调用它foo({S.bar})但看起来很别扭。

创建一个特殊的m文件只是这似乎是矫枉过正。 任何其他的想法?

Answer 1:

使用varargin作为匿名函数的参数,你可以通过一个可变数量的输入。

例如:

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

用法

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

you provided 4 arguments


Answer 2:

  • 在va_arg在MATLAB称为varargin这里是链接的内容:

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
  • 定义匿名函数作为2 4的输出M档功能的


文章来源: Anonymous function with a variable-length argument list