我可以创建一个接受可变数量参数的匿名函数吗?
我有一个S
带有特定字段的结构数组,比如说,bar
我想将所有bar
值传递给我的匿名函数foo
。由于 struct 中的元素数量S
未知,foo
因此必须能够接受可变数量的参数。
我能想到的最接近的事情是将单元数组作为输入参数列表传递:
foo({arg1, arg2, arg3, ...})
我正在调用它foo({S.bar})
,但它看起来很尴尬。
为此创建一个特殊的 m 文件似乎有点过头了。还有其他想法吗?
我可以创建一个接受可变数量参数的匿名函数吗?
我有一个S
带有特定字段的结构数组,比如说,bar
我想将所有bar
值传递给我的匿名函数foo
。由于 struct 中的元素数量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