我能否创建一个接受可变数量参数的匿名函数?
我有一个结构体数组 S
,其中有一个字段,比如说bar
,我想将所有bar
的值传递给我的匿名函数foo
。由于结构体S
中的元素数量未知,foo
必须能够接受可变数量的参数。
我能想到的最接近的方法是将一个单元格数组作为输入参数列表进行传递:
foo({arg1, arg2, arg3, ...})
我用foo({S.bar})
来调用它,但这看起来非常别扭。
专门为此创建一个特殊的m文件似乎有些过头了。还有其他想法吗?
我能否创建一个接受可变数量参数的匿名函数?
我有一个结构体数组 S
,其中有一个字段,比如说bar
,我想将所有bar
的值传递给我的匿名函数foo
。由于结构体S
中的元素数量未知,foo
必须能够接受可变数量的参数。
我能想到的最接近的方法是将一个单元格数组作为输入参数列表进行传递:
foo({arg1, arg2, arg3, ...})
我用foo({S.bar})
来调用它,但这看起来非常别扭。
专门为此创建一个特殊的m文件似乎有些过头了。还有其他想法吗?
varargin
作为匿名函数参数,可以传递可变数量的输入。例如:
foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
使用方法
s(1:4) = struct('bar',1);
foo(s.bar)
you provided 4 arguments
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
varargin
可以用在匿名函数中,而答案就在我的眼前:) 就此而言,您可以使用nargin
代替length(varargin)
:) - Eitan Tnargin
,但我想要一些简单的操作来使用varargin
。 - Jonas