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

Eit*_*n T 12 matlab anonymous-function

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

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

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

foo({arg1, arg2, arg3, ...})
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*nas 10

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

例如:

foo = @(varargin)fprintf('you provided %i arguments\n',length(varargin))
Run Code Online (Sandbox Code Playgroud)

用法

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

you provided 4 arguments
Run Code Online (Sandbox Code Playgroud)